这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天,本次是接着上次对于redis基础执行继续进行学习,对于redis相关数据类型的执行命令进行了学习,包括字符串、哈希、集合等等,同时还了解了redis中的发布和订阅。
3.字符串:
set key value----设置指定key的值
get key---获取指定key的值
getrange key start end---返回key中字符串值的子字符
getset key value---将key的值设置value,并返回key的旧值
getbit key offset 对key所存储的字符串值,获取指定偏移量上的位bit
mget key1[key2...]获取所有(一个或多个)给定key的值
setnx key value---只有在key不存在时设置key的值
4.哈希:
hash是一个string类型的field(字段)和value(值)的映射表,hash适合用于存储对象
hdel key field1[field2]---删除一个或多个哈希表字段
hexists key field---查看哈希表key中,指定的字段是否存在
hget key filed---获取存储在哈希表中指定字段的值
hgetall key---获取在哈希表中执行key的所有字段和值
hkeys key---获取所有哈希表中的字段
hlen key---获取哈希表中字段的数量
hvals key---获取哈希表中所有值
5.列表:
redis列表是简单的字符串列表,按照插入顺序排序。
blpop key1[key2]timeout---移除并获取列表的第一个元素
brpop key1[key2] timeout----移除并获取列表中的最后一个元素
lindex key index---通过索引获取列表中的元素
llen key---获取列表长度
lpop key---移除并获取列表的第一个元素
lpush key value1[value2]---将一个或多个值插入到列表头部
lpushx key value---将一个值插入到已存在的列表头部
6.集合:
redis的set是string类型的无序集合,集合对象的编码可以是intset或者hashtable
sadd key member1[member2]----向集合中添加一个或多个成员
scard key---获取集合的成员数
spop key---移除并返回集合中的一个随机元素
smembers key---返回集合中的所有成员
7.有序集合:
redis有序集合中的每个元素都会关联一个double类型的分数,redis是通过分数来为集合中的成员进行从小到大的排序。(分数可以重复)
zadd key score1 member1[score2 member2]---向有序集合添加一个或多个成员,或者更新已存在成员的分数。
zcard key---获取有序集合的成员数
zrank key member---返回有序集合中指定成员的索引
8.HyperLogLog:
redis HyperLogLog实现基数统计的算法,可以保证在输入元素的数量或者体积非常非常大时,计算基数所需的空间是固定、并且很小的。
但是hyperLogLog只会根据输入元素来计算基数,而不会存储元素本身,所以不能像集合那样输出各个元素。
pfadd key element[element...]---添加指定元素到HyperLogLog中
pfcount key[key...]----返回给定HyperLogLog的基数估算值
9.发布订阅:
redis发布订阅(pub/sub)是一种消息通信模式。
redis client可以订阅任意数量的频道
需要开启两个redis-cli客户端
第一个redis-cli客户端:
subscribe runnoobChat
第二个redis-cli客户端:
publish runoobChat "Redis publish test"
10.redis 事务:
redis事务一次可执行多个命令,具有以下三个重要保证:
- 批量操作在发送exec命令前被放入队列缓存
- 收到exec命令后进入事务执行,事务中任意命令执行失败,其余命令仍然被执行
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
事务从开始到执行经历的三个阶段:
- 开始事务
- 命令入队
- 执行事务
单个redis命令的执行是原子性的,但redis没有在事务上增加任何维护原子性的机制,所以redis事务的执行不是原子性的。
discard---取消事务
exec---执行所有事务块内的命令
multi---标记一个事务块的开始
unwatch---取消watch命令对所有key的监视