Redis对外数据结构的内部编码Redis内存与数据存储优化内存设置

2019-05-24  数据库         CSDN

type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构。

实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合适的内部编码。可以看到每种数据结构都有两种以上的内部编码实现,例如string数据结构就包含了raw、int和embstr三种内部编码。同时,有些内部编码可以作为多种外部数据结构的内部实现,例如ziplist就是hash、list和zset共有的内部编码。

图片来源:https://image-static.segmentfault.com/186/825/1868251457-5ac3a4d996c3e

Redis的五种数据结构的内部编码 https://www.cnblogs.com/yangmingxianshen/p/8054094.html
评论列表

Redis基本操作

    2019-05-24    

1、String

可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作。字符串命令:
①get、获取存储在指定键中的值
②set、设置存储在指定键中的值
③del、删除存储在指定键中的值(这个命令可以用于所有的类型)

2、list

一个链表,链表上的每个节点都包含了一个字符串,从链表的两端推入或者弹出元素,根据偏移量对链表进行修剪(trim),读取单个或者多个元素,根据值查找或者移除元素。列表命令:
①rpush、将给定值推入列表的右端
②lrange、获取列表在指定范围上的所有值
③lindex、获取列表在指定范围上的单个元素
④lpop、从列表的左端弹出一个值,并返回被弹出的值
⑤lrem、从左到右或从右到左最多删除count个value. lrem key count value

3、set

包含字符串的无序收集器(unordered collection)、并且被包含的每个字符串都是独一无二的。添加,获取,移除单个元素,检查一个元素是否存在于集合中,计算交集,并集,差集,从集合里面随机获取元素。集合命令:
①sadd、将给定元素添加到集合
②smembers、返回集合包含的所有元素
③sismember、检查指定元素是否存在于集合中
④srem、检查指定元素是否存在于集合中,那么移除这个元素

4、hash

包含键值对无序散列表,添加,获取,移除当键值对,获取所有键值对。散列命令:
①hset、在散列里面关联起指定的键值对
②hget、获取指定散列键的值
③hgetall、获取散列包含的所有键值对
④hdel、如果给定键存在于散列里面,那么移除这个键

5、zset

字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定。添加,获取,删除单个元素,根据分值范围(range)或者成员来获取元素。有序集合命令:
①zadd、将一个带有给定分值的成员添加到有序集合里面
②zrange、根据元素在有序排列中所处的位置,从有序集合里面获取多个元素
③zrangebyscore、获取有序集合在给定分值范围内的所有元素
④zrem、如果指定成员存在于有序集合中,那么移除这个成员

应用

    2019-05-24    

存储用户信息:

原生字符串:需要多个键,set user:1:name tom

序列化字符串:set user:1 serialize(userinfo) 序列化对象,在取数据后需要反序列化

使用哈希:hmset user:1 name tom age 22    需要注意哈希元素的个数和值的长度会影响哈希的内部编码方式

列表的使用:

模拟栈和队列:lpush+lpop=stack, lpush+rpop=queue

消息队列:lpush+brpop=message queue

有限集合:lpush+ltrim=capped collection

集合:

不重复、无序的,可以做交、并、差

标签(tag)使用

有序集合:

不重复、按评分排序。用户中每个元素包含一个评分。

排行榜使用

附加功能

    2019-05-24    

慢查询分析

redis shell

pipeline:节约RTT 组装多条命令(解决网络瓶颈)

事务与Lua:事务放在multi和exec命令之间

Bitmaps:位(二进制)

Hyperloglog:一种基数运算,内容会用少量损失

发布订阅:多客户端和redis频道

GEO:地理位置定位

内存消耗、内存管理、内存优化

    2019-06-01    

文章内容的h2标题锚点:
评论列表
Redis基本操作
应用
附加功能
内存消耗、内存管理、内存优化