Redis
Redis一个键值储存系统,也就是我们说得NOSQL数据库。
优点
数据保存在硬盘上,读取快;占用更小的内存;当然还有和其他数据库一样的特性,像集群,数据库复制等。
安装
$ wGET http://download.redis.io/releases/redis-3.0.4.tar.gz
$ tar xzf redis-3.0.4.tar.gz
$ cd redis-3.0.4
$ make
启动服务
$ src/redis-server
运行
$ src/redis-cli
redis> SET foo bar
OK
redis> GET foo
"bar"
使用
基本操作
SET Key Value #设置键和值
SET floor 10
GET Key #获得键的值
GET floor => 10
INCR Value #值自动加一
INCR floor => 11
DEL Value #删除键
DEL floor
EXPIRE Key Seconds #设置键在多少秒后自动销毁
SET resource "Demo"
EXPIRE resource 120
TTL Key #显示键在多少秒后销毁
TTL resource => 120
TTL resource => -2 #-2代表键已销毁
TTL Key=> -1 # -1代表这个键没有设置自动销毁
List操作
RPUSH friends "Lily" #在list尾增加值
RPUSH friends "Lucy"
LPUSH friends "Alan" #在list首增加值
LRANGE friends 0 -1 => 1) "Alan", 2) "Lily", 3) "Lucy" #显示所有值
LRANGE friends 0 1 => 1) "Alan", 2) "Lily"
LRANGE friends 1 2 => 1) "Lily", 2) "Lucy"
LLEN friends => 3 #显示值个数
LPOP friends => "Alan" #移除第一个值
RPOP friends => "Lucy" #移除最后一个值
Set操作
于List的不同之处在于他没有固定的顺序和他的值可能只出现一次
SADD friends "Alan"
SADD friends "Lucy"
SADD friends "Lily"
SMEMBERS friends => 1) "Lily" 2) "Lucy"` 3) "Alan" #显示所有的值
SREM friends "Alan" #在set中删除这个值
SISMEMBER friends "Lucy" => 1 #1代表set中存在该值
SISMEMBER friends "Alan" => 0 #0代表set中不存在该值
SADD enemy "Jack"
SADD enemy "Zed"
SUNION friends enemy => 1) "Jack" 2) "Lucy" 3) "Lily" 4) "Zed"
SADD runner 1009 "Alan"
SADD runner 1000 "Jack"
SADD runner 1003 "Hoan"
ZRANGE runner 1 2 => 1) "Hoan" 2) "Alan" #在Redit1.2中增加了set得排序功能
Hash操作
HSET user:1000 name "Jack"
HSET user:1000 address "Beijing chaoyang"
HMSET user:1000 name "Jack" address "Beijing chaoyang" #以上这两种键值设置方法都可以
HGET user:1000 name => "Jack" #得到键的值
HGETALL user:1000 => 1) "name" 2) "Jack" 3) "address" 4) "Beijing chaoyang"
HSET user:1000 visits 100
HINCRBY user:1000 visits 1 => 101 #HASH值的增加
HINCRBY user:1000 visits 100 => 201
HDEL user:1000
缓存服务器:MemCache
Memcache是一免费开源、性能高、具有分布式对象的缓存系统。目前大都用于大负载网站的数据库分压。其工作机制是在内存中开辟一块空间然后建立HashTable。
工作原理
memcached(MemCache在服务器端的主程序文件名)以守护程序方式运行在一或多个服务器中,随时接受来自客户端的请求。
注:MemCache为项目名称,memcached是MemCache在服务器端的主程序文件名。
操作流程
- 检查客户端的请求数据是否在memcached中,有数据则把请求数据返回并且不对数据库进行操作;没有则查找数据库并且把从数据库中获取的数据返回给客户端,同时将数据库缓存一份到memcached中。
- 为保证数据的一致性,更新数据库的同时更行memcached中的数据。
- 如果分配给memcached的内存空间用完后,使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据先被替换然后替换掉最近最少被使用的数据。
MemCache的安装和启动
Mac下安装
Step1 Homebrew(系统软件管理程序)安装
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
也可以参考http://blog.zerosharp.com/installing-ruby-with-homebrew-and-rbenv-on-mac-os-x-mountain-lion/ 下载homebrew
Step2 安装memcached
$ brew search memcache
返回结果:
libmemcached memcache-top memcached memcacheq
则安装服务器端:
$ brew install memcached
完成后查看安装结果
$ which memcached $ memcached -h
Step3 安装libmemcached 安装客户端
$ brew install libmemcached
Step4 启动服务器
默认参数启动:
$ /usr/local/bin/memcached -d
Step5 测试
以守护程序的形式启动 memcached(-d),为其分配2GB内存(-m 2048),并指定监听 localhost端口 11211
$ ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
使用一个简单的telnet客户机连接到memcached服务器
$ telnet localhost 11211
成功则返回 Connected to localhost(已经连接到 localhost)。
命令行介绍
六项存命令
- Set:添加一个新条目到memcached或是用新的数据替换替换掉已存在的条目。 存入命令格式为:
<command> <key> <flags> <exptime> <bytes>
例如存入key为yanmin的yanmin.in值:
$ set yanmin 0 0 9 $ yanmin.in
- Add:当KEY不存在的情况下,它向memcached存数据,否则,返回NOT_STORED响应
- Replace:当KEY存在的情况下,它才会向memcached存数据,否则返回NOT_STORED响应
- Cas:改变一个存在的KEY值 ,但它还带了检查的功能
- Append:在这个值后面插入新值
- Prepend:在这个值前面插入新值
两项取命令
- Get:取单个值 ,从缓存中返回数据时,将在第一行得到KEY的名字,flag的值和返回的value长度,真正的数据在第二行,最后返回END,如KEY不存在,第一行就直接返回END 。 例如:
$ get yanmin
返回:
VALUE yanmin 0 9 yanmin.in
- Get_multi:一次性取多个值
一项删除命令
Delete