Redis数据类型及数据特性

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

  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两端不被压缩的节点的个数,当列表很长的时候最可能被访问的数据是位于列表两端的数据,所以对这个参数精准进行调优能够实如今压缩比和其余因素之间的平衡。

2、数据库