本文参考redis入门笔记
1. redis数据类型
而关于key,有几个点要提醒大家:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
【redis数据结构 – strings】
赋值
set key value
取值
get key
取值后赋值
getset key value
字符串追加操作
append key string
删除
del key
除了set,get之外得其他操作
自增1
#如果该key不存在,则创建该key,并赋值为0,0自增后为1,等同于增加 【key,1】键值对
#如果该key存在,则value自增加1
incr key
自减1
#如果该key不存在,则创建该key,并赋值为0,0自减后为-1,等同于增加 【key,-1】键值对
#如果该key存在,则value自减1
decr key
自增指定值
#如果该key不存在,则创建该key,并赋值为0,0自增numbers,等同于增加 【key,numbers】键值对
#如果该key存在,则value自增numbers
incrby key numbers
自减指定值
#如果该key不存在,则创建该key,并赋值为0,0自减numbers,等同于增加 【key,-numbers】键值对
#如果该key存在,则value自减numbers
decrby key numbers
【redis数据结构 – list】
list结构,也有的博客写的lists,列表结构,其实底层是用链表实现。
链表显然就有自己得有点和缺点了,相对于数组来说
链表:插入和删除快,但是查询慢,必须重头遍历
数组:插入和删除慢,但是查询快,随机访问性强
左边添加
lpush key value # lpush list1 1 2 3
右边边添加
rpush key value # lpush list1 a b c
查看列表 (正序反序都可以)
lrange key start stop # lrange list1 0 -1
指定位置push
lset key index value # lset list1 0 d
删除
lpop key #删除列表最左边的value
rpop key #删除列表最右边的value
rpoplpush source distination
#从source列表右边删除一个value,并把这个value存储进入distination列表中
#适用于消息发布过程中的备份操作
获取列表元素个数
llen key
lists的应用相当广泛,随便举几个例子:
1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。
【redis数据结构 – 集合】
和list类型不同的是,set集合中不允许出现重复的元素,set最大可以包含的元素是 4294967295 。注意,set中是没有顺序的。
添加
sadd key member [member ...] # sadd set1 a b c
查看
smembers key # smembers set1
删除某些值
srem key member [member ...] #srem set1 a
删除整个集合
del key # del set1
差集运算
sdiff key1 [key ...] #求集合key1与其他集合的差集
sdiffstore destination key1 [key ...] #求集合key1与其他集合的差集,并把结果存储在destination集合中
交集运算
sinter key [key...] #求多个集合的交集
sinterstore destination key [key...] #求多个集合的交集,并把结果存储在destination集合中
并集运算
sunion key [key...] #求多个集合的并集
sunionstore destination key [key...] #求多个集合的并集,并把结果存储在destination集合中
查看member在key中是否存在
sismember key member
集合key中随机放回 count 个元素
srandmember key [count]
查看集合个数
scard key
对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。
【redis数据结构 – 有序集合】
sorted set跟set是比较类似的,集合中不允许出现重复的元素,那么有啥区别呢?sorted set有顺序,从小到大排序,更新操作非常快,访问数据也非常高效。
应用场景:游戏排名、微博热点
添加元素
zadd key score member [score member ...] #zadd scsets 0 a 1 b 2 c
查看集合
zrange key start stop [withscores] #zrange scsets 0 -1 查看所有
zrange key start stop [withscores] #zrange scsets 0 2 withscores 查看0 -2 元素 并且显示score
zscore key member #获取有序集合中的某个元素的score值
zrangebyscore key mim max [withscores] [limit offset count]
删除元素
zrem key member [member...] #zrem scsets a b
zremrangebyscore key min max #zremrangebyscore scsets 0 2
查询个数
zcount key min max #zcount scsets 0 2
【redis数据结构 – 哈希】
哈希是从redis-2.0.0版本之后才有的数据结构。
hash可以存储多个键值对之间的映射,它就像是一个迷你型的redis。
hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。
赋值
hset key field value # hset hsets name liu 单个赋值
hmset key field value [field value ... ] # hset hsets name liu age 18 sex man 多个赋值
取值
hget key field # hget hsets name 获取单个值
hmget key field [field ...] # hget hsets name age 获取多个值
hgetall key # hget hsets 获取所有
增加数字
hincrby key field number #hincrby hsets age 1
删除
hdel key field #删除指定的file
del key #删除所有的key
查看key中的file是否存在
hexists key field #成功返回1 不存在返回0
查看key中有多少个file
hlen key
获取所有的file
hkeys key
获取所有file的value
hvals key