Redis 之数据结构
字符串(String)
- 字符串是redis最简单的数据类型。字符串是二进制安全的,所以Redis字符串能包含任意类型的数据。 例如:JPGE图片、序列化Ruby对象。
- 一个字符串最多能存储512M字节内容 ·利用INCR命令簇(incr decr incrby)来把字符串当做院子计数器。
- 使用Append命令在字符串后添加内容。 ·使用GETRANGE和SETRANGE命令来范围访问(时间复杂度 0(N) ,0开始,-1末位。
- 在小空间里编码大量数据,或者使用getbit和setbit 创建bloom过滤器
set stringtestkey “hello world hello redis” #OK
getrange stringtestkey 0 1 #”he”
getrange stringtestkey -5 -1 #”redis”
getrange stringtestkey 10 100 #”hello redis”
setrange stringtestkey 23 “test” #”hello world hello redistest”
setrange keybu0 2 “test” #”\x00\x00test”
列表(List)
- Redis列表是简单的字符串列表,按插入顺序排序。可以从列表头部(左边)或者尾部(右边)添加元素。
- lpush在头部插入元素,rpush在尾部插入元素
- 一个列表最多可以包含2^(32-1)个元素,访问头部或者尾部很快,访问表中间元素很慢
- Redis 列表可以处理一些有趣的事,例如:
- 时间线 lpush存入,lrange取出最近插入条目
- lpush ltrim创建和维护一个永远不会超过指定元素数量数目的列表,同时记住最后N个元素
- 等待添加
集合(Sets)
- redis 集合是一个无序字符串集合。0(1)时间复杂度完成添加删除测试元素是否存在
- Redis集合有唯一性特性,多次添加先相同元素最终只会存在一个元素 3.
- 一个Redis列表十分有趣的事是,它们支持一些服务端的命令从现有的集合出发去进行集合运算。 所以你可以在很短的时间内完成合并(union),求交(intersection), 找出不同元素的操作。
- 一个集合最多可以包含2^(32-1)个元素(4294967295,每个集合超过40亿个元素)。
- 你可以用Redis集合做很多有趣的事,例如你可以:
- 用集合跟踪一个独特的事。想要知道所有访问某个博客文章的独立IP?只要每次都用SADD来处理一个页面访问。那么你可以肯定重复的IP是不会插入的。
- Redis集合能很好的表示关系。你可以创建一个tagging系统,然后用集合来代表单个tag。接下来你可以用SADD命令把所有拥有tag的对象的所有ID添加进集合,这样来表示这个特定的tag。如果你想要同时有3个不同tag的所有对象的所有ID,那么你需要使用SINTER.
- 使用SPOP或者SRANDMEMBER命令随机地获取元素。