本文共 4775 字,大约阅读时间需要 15 分钟。
Redis本质上是一个Key-Value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务等等。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
(1)会话缓存(Session Cache)
最常用的一种使用redis的情景是会话缓存(session cache)。用redis缓存会话比其他存储(如Memcached)的优势在于:redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?
幸运的是,随着 redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供redis的插件。
(2)全页缓存(FPC)
动态页面静态化 我们会把今天访问的页面但修改的很少的页面放到redis当中
除基本的会话token之外,redis还提供很简便的FPC平台。回到一致性问题,即使重启了redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。(3)队列
reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得redis能作为一个很好的消息队列平台来使用。redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。
如果你快速的在Google中搜索“redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用redis创建非常好的后端工具,以满足各种队列需求。例如,Celery有一个后台就是使用redis作为broker.
(4)排行榜/计数器
(5)发布/订阅
最后(但肯定不是最不重要的)是redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用redis的发布/订阅功能来建立聊天系统!
1、连接redis数据库:redis-cli
(默认使用的是0号数据库,数据库是没有名称的,默认有16个,通过0-15来标识)
如果想要正常显示中文,重新进入redis(命令:redis-cli --raw
)
2、切换到其他数据库:select n
(n为数据库的编号)
一个key值对应一个value值
对应格式(举例):
key valueid 4
1.1、增(改)
set key value
:设置一个key,值为value,类型为string。
set name wwc
1.2、追加数据
append key value
:即在已有数据后面追加value值
append name 666------------------------查询后name对应的值:wwc666
1.3、查
get key
:获得对应key的value值
get name-----------------------结果:wwc666
type key
:查看类型
type name -->stringtype age -->string 注意无论age是数字还是字符串这里都显示string类型
1.4、删
del key
:删除key即对应的value值
del name
1.5、一次设置多个key value
mset key value key value····
:一次添加多个key value
mset name wwc sex boy age 19
1.6、一次获取多个value
mget key···
:一次获取多个value
mget name sex age
1.7、其他操作
自加:incr
decr
加: incrby
减: decrby
示例:
set num 100 incr num incr会识别字符串里面的数字并加一--------->结果: 101decr num incr会识别字符串里面的数字并减一--------->结果: 100incrby num 100 在原有的基础上增加100--------->结果: 200decrby num 50 在原有的基础上减少50--------->结果: 150
字符串列表
对应格式(举例):
key valuelist1 1 2 3 4
2.1、增
在插入数据时,如果该键不存在,redis将新建一个该键。
rpush key value....
:在尾部添加数据
rpush list1 1 2 3
lpush key value...
: 在头部添加数据
lpush list1 7 8 9------------结果:7 8 9 1 2 3
2.2、查
lrange key start stop
: 从start开始查找到stop结束
lrange list1 0 4 #查看下标0到4的数据lrange list1 0 -1 #查看下标0到最后一个数据
lindex key index
: 根据index查看某个数据
lindex list1 0 #查看下标为0的数据
type key
:查看类型
type list1 --->list
2.3、改
lset index value
: 修改下标为index的值为value
lset list1 0 2 #将下标为0的数据修改为2
2.4、删
rpop key
: 在尾部删除一个数据
rpop list1
lpop key
: 在头部删除一个数据
lpop list1
lrem key count value
:删除指定个数的数据
lrem list1 0 3 #删除list1中所有3lrem list1 1 3 # 删除list1中1个3
del key
:删除所有数据
del list1
是一个键值对集合
对应格式(举例):
key valueuser username wwc sex boy age 20
3.1、增
hset key field value
:添加
hset user name wwc #这里user就是keyhset age 20
3.2、查
hget key field
:查找filed对应的value
hget user namehget user age
hkeys key
:查看所有的field
hkeys user
hvals key
:获取指定 key 所有字段的值
hvals user
hgetall key
:查看域值(所有的field value)
hgetall user
hlen key
:查看有多少个域值对
hlen user
type key
:查看类型
type user --->hash
3.3、删
hdel key field
:删除字段
hdel user name #删除user里面的name
3.4、添加多个field value
hmset key field value...
:一次添加多个field value
hmset user name wwc age 20 sex boy
3.5、获取多个field的value
hmset key field...
:获取多个field的value
hmget user name age sex
无序的字符集合 ,和python的集合一样都有无序性 、唯一性
对应格式(举例):
key valueset1 1 2 3 4
4.1、增
sadd key value····
:添加集合(key)及元素(value)
sadd set1 1 2 3 4 5
4.2、查
smembers key
:查看集合元素
smembers set1
type key
:查看类型
type set1
4.3、删
spop key (count)
:随机删除一个(count个)
spop set1 #随机删除一个spop set1 3 #随机删除3个元素
srem key members...
:指定删除
srem set1 1 2 3
4.4、其他
smove set1 set2 3
:把3从set1中移动到set2中
sismember set1 3
:判断3是否在set1中 ( 0代表不在 ,1代表在)
交集:sinter set4 set5
:求set4和set4的交集
并集:sunion set4 set5
:求set4和set4的并集
差集:sdiff set4 set5
: 求set4和set4的差集
有序集合类型
对应格式(举例):
key valuezset1 1 one 2 two 3 three...
5.1、增
示例:zadd zset1 1 one 2 two 3 three 1 four 1 five
5.2、查
示例:
zrange zset1 0 -1 通过索引查看zrangebyscore zset1 2 3 通过权值查看2到3之间的元素(包括2和3)zscore zset1 four 查看four的权值
5.3、删
示例:
zrem zset1 five 直接删除fivezremrangebyrank zset1 0 1 删除索引在0-1zremrangebyscore zset1 1 2 删除权值在1-2
key *
:查看所有key值
del key
:删除
exists key
:不存在返回0 存在返回1
rename key new_key
:改名
expire key seconds
:设置过期时间
ttl key
:查看过期时间(-1代表永久,2过期)
persist key
:撤销过期时间
subscribe 1009
: 订阅 频道:1009 (注:1009是你自己写的)
publish 1009 '你好'
:发布 频道:1009 转载地址:http://xbah.baihongyu.com/