redis 任何数据结构可以设置过期时间:
expire key 5
set key 100 ex 10 //10秒过期
ttl key
list,set,sorted set,hash等可以存储多个数据的数据结构有如下行为规则:
1.当向一个聚合的数据类型(aggregate date type)添加元素时,若目标键不存在,添加前会新创建一个新的。
2.当从聚合的数据结构中移除元素时,若值变为空的集合,这个键将自动删除。
3.当对一个不存在的键使用LLEN等只读命令或移除元素的写命令时,返回的结果如同作用在 存在这个键,并且这个键持有一个空的值的情况。
sorted set
sorted set同set一样存储唯一的,不重复的字符串,不同的是每个元素对应一个浮点数,成为score,并以此排序。排序规则为:
- A和B为两个score不同的元素,若A.score > B.score 则 A>B 。
- 若A和B score相同,当A字符串按照字典序大于B字符串时,则A>B 。(注,A和B的字符串不会相同,因为集合不会存储重复元素)
zadd hackers 1940 "Alan Kay" 1992 "nuclear_sun"
zrange hackers 0 -1//列出第一个到最后一个元素,默认增序
zrevrange hackers 0 -1//降序
zrange hackers 0 -1 withscores//列举并显示score
zrangebyscore hackers -inf 1950//列出score在负无穷到1950之间的(包括两端)元素
zremrangebyscore hackers 1940 1960//移除score在1940和1960之间(包含两端)的元素
zrank hackers "Anita Borg"//获得按score排序的顺序
zrevrank hackers "Anita Borg"
还可以依据存储字符串的字典序进行操作
对一个已存在的元素再次使用zadd命令可以更新score,所以sorted set适合用于有大量更新的场景。
sorted set很适合用于需要排序的场合,如游戏分值排行榜。
hash
命令:
hmset user:1000 username antirez birthyear 1977 verified 1
hget user:1000 username
hgetall user:1000
hmget user:1000 username birthyear no-such-field
hincrby user:1000 birthyear 10