学习资料《redis开发与运维》
全局命令:
1,查看所有键:keys *
2,键总数:dbsize
3,检查键是都存在:exists key
4,删除键:del key
5,键过期:expire key seconds
6,键的数据结构类型:type key
字符串
命令:
设置值:set key value
获取值:get key
批量设置:mset key value key value ........
批量获取:mget key key key .............
计数:incr key
追加值:append key value
字符串长度:strlen key
设置并返回原值:getset key value
设置指定位置的字符:setrange key offeset value
获取部分字符串:getrange key start end
内部编码:
int(8字节),embstr(<=39),raw(>39)
使用场景:
缓存,计数,共享Session ,限速
哈希
命令:
设置值:hset key field value
获取值:hget key field
删除值:hdel key field
计算feild个数:hlen key
批量设置获取值:hmset key feild value feild value feild value ...........
hmget key feild feild feild feild ..........
判断存在:hexists key feild
获取所有feild:hkeys key
获取所有value:hvals key
获取所有的feild-value:hgetall key
计算value长度:hstrlen key feild
内部编码:
压缩列表(ziplist):元素个数小于512个,同时所有值都小于64字节时
哈希表(hashtable):无法满足ziplist时,但是这个内存大,读写效率下降
使用场景:储存适合哈希结构的数据
列表
特点:有序,可重复
命令:
内部编码:
压缩列表(ziplist):同哈希
链表(linkedlist):无法满足压缩时
使用场景:
消息队列,文章列表
使用:
lpush+lpop=Stack(栈)
lpush+rpop=Queue(队列)
lpsh+ltrim=Capped Collection(有限集合)
lpush+brpop=Message Queue(消息队列)
集合
特点:不允许重复,无序
命令:
1,集合内操作
添加:sadd key element element element .........
删除:srem key element element element .........
计数:scard key
判断元素是否在集合中:sismember key element
随机返回个数元素:srandmember key count
随机弹出元素:spop key
获取所有元素:smember key
2,集合间操作
求多个集合交集:sinter key key ............
求多个集合的并集:suinon key key ..........
求多个集合差集:sdiff key key .........
将交集并集差集结果保存:
sinterstore destination key key ..........
suinonstore destination key key ..........
sdiffstore destination key key ..........
内部编码:
整数集合(intset):整数并且个数小于512时
哈希表(hashtable):无法满足是
使用场景:
给用户添加(删除)标签
给标签加(删除)用户
计算用户共同感兴趣的标签
有序集合
有序集合中的元素可以排序。但是它和列表使用索引下标作为
排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依
据。如图2-24所示,该有序集合包含kris、mike、frank、tim、martin、tom,
它们的分数分别是1、91、200、220、250、251,有序集合提供了获取指定
分数和元素范围查询、计算成员排名等功能,合理的利用有序集合,能帮助
我们在实际开发中解决很多问题。
命令:
1,集合内
添加:zadd key score member score member ........
个数:zcard key
计算分数:zcore key member
计算排名:zrank key member(低到高),zrevrank key member(高到底)
删除成员: zrem key member
添加成员分数:zincrby key increment member
返回指定排名范围内成员:zrange key start end,zrevrange key start end
返回指定分数范围内的成员:zrangebyscore key min max ,zrevrangebyscore key max min
返回指定分数范围成员个数:zcount key min max
删除指定排名内升序元素:zremrangebyrank key start end
删除指定分数范围内的成员:zremrangebyscore key min max
2,集合间操作
交集:
zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
·destination:交集计算结果保存到这个键。
·numkeys:需要做交集计算键的个数。
·key[key...]:需要做交集计算的键。
·weights weight[weight...]:每个键的权重,在做交集计算时,每个键中
的每个member会将自己分数乘以这个权重,每个键的权重默认是1。
·aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、
min(最小值)、max(最大值)做汇总,默认值是sum。
并集:
zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
内部编码:ziplist,跳跃表(skiplist)
使用场景
添加(取消)用户赞数,展示获取赞数最多的几个用户,展示用户信息以及用户分数,
键管理
1重命名:rename key newkey
2随机返回键:randomkey
3键过期:·expire key seconds:键在seconds秒后过期。
·expireat key timestamp:键在秒级时间戳timestamp后过期。
(1)键不存在,则返回0;
(2)如果赋值的过期时间为负值,键会立即删除,同del操作
(3)清除过期时间:persist
(4)对于字符串类型键,执行set会去掉过期时间(不懂)
(5)不支持二级数据结构(哈希,列表)过期时间
4迁移键
(1)move:reids内部的数据库之间的键迁移
(2)dump+restore:不同的redis之间进行迁移,dump先序列化,rdb格式的,再restore复原
(3)migrate:migrate命令也是用于在Redis实例间进行数据迁移的,实际上migrate命
令就是将dump、restore、del三个命令进行组合,从而简化了操作流程。
migrate命令具有原子性,而且从Redis3.0.6版本以后已经支持迁移多个键的
功能,有效地提高了迁移效率,总之这个会删除原来的键
遍历键
1,全量遍历键:keys pattern
(pattern直接使用星号,这是因为pattern使用的
是glob风格的通配符:
·*代表匹配任意字符。
·代表匹配一个字符。
160
·[]代表匹配部分字符,例如[1,3]代表匹配1,3,[1-10]代表匹配1到10
的任意数字。
·\x用来做转义,例如要匹配星号、问号需要进行转义。)
例子:keys *
2渐进式遍历
scan cursor [match pattern] [count number]
·cursor是必需参数,实际上cursor是一个游标,第一次遍历从0开始,每
次scan遍历完都会返回当前游标的值,直到游标值为0,表示遍历结束。
·match pattern是可选参数,它的作用的是做模式的匹配,这点和keys的
模式匹配很像。
·count number是可选参数,它的作用是表明每次要遍历的键个数,默认
值是10,此参数可以适当增大。
数据库管理
1,切换数据库:select dbIndex
与关系型数据库用字符来区分不同数据库名不同,Redis只是用数
字作为多个数据库的实现。Redis默认配置中是有16个数据库,用数字表示
2,清除数据库:flushdb(当前数据库)/flushall(所有数据库)