Redis总结111

Reids的数据结构

数据类型存储的值常见操作
STRING字符串、整数、浮点数GET,SET
LIST一个链表,每个节点一个字符串RPUSH/LPUSH,LRANGE,LINDEX,LPOP/RPOP
SET包含字符串的无序收集器SADD,SMEMBERS,SISMEMBER,SREM
HASH无序散列表,并不支持嵌套HSET,HGET,HGETALL,HDEL
ZSETmember和score之间的有序映射,排列顺序由分值决定ZADD,ZRANGE,ZRANG,ZREM
下面介绍每种数据类型的操作:
##STRING操作
操作参数解释
---
INCRkey-name加一,注意这是原子操作
DECRkey-name减一,这也是原子操作
INCRBYkey-name amount加上整数amount
DECRBYkey-name amount减去整数amount
INCRBYFLOATkey-name amount加上浮点数amount
其中还有字串和位处理的方法:
操作参数解释
---
APPENDkey-name value将value追加到存储的值的末尾
GETRANGEkey-name start获取由偏移量[start,end]的字串
SETRANGEkey-name offset value将offset偏移量开始的字串设定为指定值
GETBITkey-name offset返回偏移量为offset的二进制位的值
SETBITkey-name offset value将偏移量为offset的二进制位设为value
BITCOUNTkey-name [start end]返回[start end]范围内二进制值为1的数量
BITOP[AND OR XOR NOT] dest-key key-name [key-names …]对key-names进行位操作
##LIST操作
操作参数解释
---
RPUSHkey-name value [value…]将一个或多个值推入右端
LPUSHkey-name value [value…]将一个或多个值推入左端
RPOPkey-name移除并返回最右端元素
LPOPkey-name移除并返回最左端元素
LINDEXkey-name offset返回偏移量为offset的元素
LRANGEkey-name start end返回[start,end]
LTRIMkey-name start end对列表进行修建,返回[start,end]
LIST还提供了阻塞式的弹出命令:
操作参数解释
---
BLPOPkey-name [key-names…] timeout弹出最左边的元素,或者阻塞timeout的时间用于等待
BRPOPkey-name [key-names…] timeout从第一个非空列表中弹出位于最右端的元素,或者等待timeout
RPOPLPUSHsource-key dest-key从source-key弹出最右端的元素,并推入dest-key最左端,并返回这个元素
BRPOPLPUSHsource-key dest-key timeout从source-key弹出最右端的元素,并推入dest-key最左端,并返回这个元素,如果不存在将等待timeout时间
##集合
操作参数解释
---
SADDkey-name item [items…]将一个或者多个元素加入集合,返回本来不在集合中的元素
SREMkey-name item [items…]移除一个或者多个元素,并返回被移除元素数量
SISMEMBERkey-name item检查该元素是否位于集合
SMEMBERSkey-name返回包含的所有元素
SCARDkey-name返回该集合数量
SRANDMEMBERkey-name [count]随机返回count数量的元素,如果count为负数,那么返回的元素可能重复
SPOPkey-name随机的移除一个元素
SMOVEsource-key dest-key item如果集合source-key包含元素item,那么从source-key移除该元素,并添加至dest-key
用于处理多个集合的操作
操作参数解释
---
SDIFFkey-name [key-names…]key-name出现,但key-names未出现的元素
SDIFFSTOREdest-key key-name [key-names…]相当于将上面的结果存入dest-key中
SINTERkey-name [key-names…]返回存在于所有集合中的元素(交集运算)
SINTERSTOREdest-key key-name [key-names…]将交集的结果存入dest-key中
SUNIONkey-name [key-names…]求并集
SUNIONdest-key key-name [key-names…]求并集,并将结果存于dest-key中
其他常用命令:
##散列
操作参数解释
---
HMEGTkey-name key [keys…]获取一个或者多个键的值
HMSETkey-name key value [key value]设置一个或者多对键值
HDELkey-name key [keys…]删除散列中多个键值对
HLENkey-name返回包含的键值对数量
HEXISTSkey-name key检查给定键是否存在于散列中
HKEYSkey-name所有包含的键
HVALSkey-name所有包含的值
HGETALLkey-name包含的所有键值对
HINCRBYkey-name key increment将key存储的值加上increment
HINCRBYFLOATkey-name key increment将key存储的值加上浮点数increment
###有序集合
操作参数解释
---
ZADDkey-name score member[score member…]添加给定分值的成员进入有序集合
ZREMkey-name member [members…]从有序集合里移除给定成员
ZCARDkey-name返回有序集合包含的成员数量
ZINCRBYkey-name increment member在member成员的分值上加上increment
ZCOUNTkey-name min max分值介于min和max的成员数
ZRANKkey-name member返回成员member在有序集合中的排名
ZREVRANKkey-name member返回有序集合里成员member的排名,逆序返回
ZRANGEkey-name start stop [WITHSCORES]返回[start,stop]之间的成员,如果指定了withscore,那么会将成员分支一并返回
ZREVRANGEkey-name start stop [WITHSCORES]返回有序集合给定排名范围内的成员,逆序返回
ZSCOREkey-name member返回成员member的分值
与Score有关系的获取、删除、并与交
操作参数解释
---
ZRANGEBYSCOREkey-name min max [WITHSCORES] [LIMIT offset count]返回分值介于min和max之间的所有成员
ZREVRANGEBYSCOREkey-name min max [WITHSCORES] [LIMIT offset count]返回分值介于min和max之间的所有成员,逆序返回
ZREMRANGEBYRANKkey-name start stop返回介于start和stop之间的所有成员
ZREMRANGEBYSCOREke-name min max介于min和max之间的所有成员
ZINTERSTOREdest-key key-count key [keys…] [WEIGHTS weight[weight…]] [AGGREGATE SUM|MIN|MAX]类似于集合的交集运算
ZUNIONSTOREdest-key key-count key [keys…] [WEIGHTS weight[weight…]] [AGGREGATE SUM|MIN|MAX]类似于集合的并集运算
###其他常用命令
命令用例描述
--
EXPIREkey-name timestamp用于设置过期时间
SORTsource-key排序
TTLkey-name查看还有多久过期
发布与订阅
命令用例描述
--
SUBSCRIBESUBSCRIBE channel [channel…]订阅给定的一个或者多个频道
UNSUBSCRIBEUNSUBSCRIBE channel [channel…]退订指定频道
PUBLISHPUBLISH channel message向给定频道发送消息
PSUBSCRIBEPSUBSCRIBE pattern [pattern…]订阅模式匹配的所有频道
PUNSUBSCRIBEPUBSUBSCRIBE pattern [pattern…]退订给定模式
###主从复制
通过SLAVEOF host port命令,可以让服务器开始复制一个新的主服务器,他们的过程如下
步骤主服务器操作从服务器操作
---
1(等待命令进入)连接(或者重连接)主服务器,发送SYNC命令
2开始执行BGSAVE,并使用缓冲器记录BGSAVE之后执行的所有写命令根据配置选项决定使用现有数据,还是相发送请求的客户端返回错误
3BGSAVE执行完毕,向服务器发送快照文件,并在发送期间继续使用缓冲区记录被执行的写命令丢弃所有旧数据,开始载入主服务器发来的快照文件
4快照文件发送完毕,开始向从服务器发送存储在缓冲区里面的写命令完成对快照文件的解释操作,之后开始接受命令请求
5缓冲区的写命令发送完毕,从现在每执行一个写命令,就向服务器发送相同的写命令执行主服务器发送来的所有存储在缓冲区的写命令;从现在开始,接受并执行主服务器传来的每一个写命令
需要注意的是Redis不支持主主复制
当多个从服务器连接主服务器时,如果步骤3尚未执行,那么所有的从服务器都会接收到相同的快照文件和相同的缓冲区写命令,否则将对每一个从服务器进行步骤1-5的连接
###Redis持久化方式
两种:快照、只追加文件(AOF)
快照:通过快照可以得到内存里里面的数据在某个时间点上的副本,一般通过BGSAVE命令来创建一个快照
AOF:AOF持久化会将被执行的写命令写到AOF文件的末尾,以此来记录发生的变化,主要用于数据恢复,通过appendonly yes配置来打开
###批量操作
通过”流水线方式“
###事务支持
由MULTI命令和EXEC命令支持,作用是移除竞争条件和提高性能,其中提高性能的原因是通过一次发送所有消息,来减少通信时的网络延迟。其中可以通过使用watch对某个数据结构进行监听,如果发生了改变,就会报错,watch这种方法属于典型的乐观锁
###分布式锁
SETNX命令天生就适合用于实现锁的功能,锁所要做的就是将一个随机生成的128位UUID设置为键的值,为了放置程序崩溃之后锁能够被自动释放,应该通过EXPIRE命令对锁设置过期时间。
###降低内存占用
降低内存占用有诸多好处,除了存储更多的数据之外还可以:
  • 减少创建快照和加载快照所需要的时间
  • 提升载入AOF和重写AOF文件的效率
  • 缩短从服务器同步所需要的时间

压缩列表:对于列表来说,就是通过将双向链表的数据结构,转化为一个值表示前一个字符串的长度,一个值表示当前字符串长度,然后还有当前字符串
集合的整数集合编码:该编码有三个前提:1.整数包含的所有成员都可以被解释为十进制整数、2.所有整数都处于有符号整数范围之内、3.集合成员数量小于配置的数量。整数集合降低内存占用的代价就是每一次插入数据都有可能对数据进行移动。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值