Redis数据类型及数据特性

一、Redis数据类型
在使用Redis进行应用设计和开发时,应首先考虑的是Redis原生支持的那种数据类型最适合我们的应用场景。此外,无法使用像在关系数据库中那样的SQL来操作Redis的数据,相反,需要直接使用API发送数据对应的命令,来操作想要操作的目标数据。
Redis支持的数据类型有:string, list, hash, set, sorted set, HyperLogLog, Geo

  1. 使用字符串string类型
    1) 字符串在Redis内部的编码方式:
    int : 用于能够使用64位有符号整数表示的字符串
    embstr: 用于长度小于等于44字节的字符串;这种类型的编码在内存使用和性能方面更有效率
    raw: 用于长度大于44字节的字符串
    2)可以使用OBJECT ENCODING命令来查看与键相关联的Redis值对象的内部编码方式
    3 ) SETRANGE key offset value 可以理解为是针对key在offset偏移量处使用value进行的字符串替换, value有多少覆盖多少,不是从offset处完全替换字符串!
  2. 使用列表List类型
    1) 列表能够存储一组对象,因此它也可以被用作栈或者队列。在Redis中,与键相关联的值可以是字符串组成的列表。Redis中的列表更像是数据结构中的双向链表。
    2) Redis中的列表与双向链表类似,所以可以使用下面三个命令将新元素添加到列表中,LPUSH将元素添加到列表的左端,RPUSH将元素添加到列表的右端,LINSERT将元素插入到列表的枢轴元素之前和之后(对应配合使用BEFORE和AFTER)。LPUSH、RPUSH和LINSERT会返回插入后列表的长度,在向列表中插入元素前,无需为一个键初始化一个空列表。如果向一个不存在的键中插入元素,Redis将首先创建一个空列表并将其与建关联。同样,也不需要删除值为空列表的键,因为Redis会回收这种键。
    3) LPUSHX和RPUSHX会仅在列表存在时将元素插入到列表中。
    4) LPOP和RPOP命令从列表中分别在左端和右端移除第一个元素并返回其值,当对不存在的键执行LPOP或者RPOP时,将返回(nil);
    5)可以使用LINDEX命令从列表中获取位于指定索引处的元素,也可以使用LRANGE命令获取一个范围内的元素。Redis中列表的索引类似于Python的列表索引,从左到右为0~N-1,从右到左指定为-1~-N,所以0 ~ -1就表示整个列表。
    6)LTRIM命令用于在删除列表中多个元素的同时, 只保留由start和end索引所指定范围内的元素;
    7)LSET命令用于设置列表中指定索引位置处元素的值。
    这里的命名”Lxxx",当涉及到左右时代表“Left"的L,否则应代表”List"的L
    8)Redis在内部使用quicklist存储列表对象,有两个配置项可以调整列表对象的存储逻辑:
    list-max-ziplist-size: 一个列表条目中一个内部节点的最大大小(quicklist的每一节点都是一个ziplist),大多数情况下使用默认值即可。
    list-compress-depth:列表压缩策略,该参数表示quicklist两端不被压缩的节点的个数,当列表很长的时候最可能被访问的数据是位于列表两端的数据,因此对这个参数精准进行调优可以实现在压缩比和其他因素之间的平衡。

二、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值