本文参考Redi官网An introduction to Redis data types and abstractions
我们一般使用Redis存储数据都会存储成String类型数据,但其实Redis提供了好几种数据结构(String,List,Set, Sorted Set, Hashes, Bit arrays, HyperLogLogs),但是我们就主要讲前面五个常用到的数据结构
String
Redis的字符串是二进制安全的,就可以理解成Redis的字符串可以包含任意类型的数据,因为像图片,视频等信息可以转成二进制类型的数据可以安全的进行转换没有任何风险。
String主要就是执行Set Key Value,Get Key命令
List
Redis是基于LinkedLIst实现的,
- LPUSH命令在List左边即头部添加一个元素
- LPOP命令会弹出最左边的元素
- BLPOP阻塞访问最左边的元素
- RPUSH命令在List右边即尾部添加一个元素
- RPOP命令会弹出最右边的元素
- BRPOP阻塞访问最右边的元素
- LRANGE命令可以取出列表里面一部分的数据
LPUSH mylist a # now the list is "a"
LPUSH mylist b # now the list is "b","a"
RPUSH mylist c # now the list is "b","a","c"
RPUSH mylist d # now the list is "b","a","c","d"
LPOP mulist 输出b
RPOP mylist 输出d
LRANGE mylist 0 -1 输出a,c
Set
Set与List的区别主要就是Set不会出现重复数据的问题,通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
- SADD key member1 member2... 把新的元素添加到Set里面
- SCARD key 获取Set的集合数
- SMEMBERS key 遍历Set
- SPOP key 移除并返回集合中的一个随机元素
Sorted Set
sorted Set和Se一致,区别在于sorted Set每个元素都会关联一个double类型的分数,然后通过该分数进行从小到大的排序
- ZADD key score1 member1 score2 member2...增加一个或多个元素
- ZCARD key 获取有序集合的成员数
- ZRANGE key start stop withscores 返回有序集合指定区间内的成员
- ZRANK key member 返回有序集合中指定成员的索引
Hashes
Hashes是字符串字段和字符串值之间的映射,Hash便于表示objects。
- HSet key field value 将哈希表key中的字段field的值设为value
- HMSET key field1 value1 field2 vlaue2... 同时将多个field-value设置到Hashes里面
- HGET key field 获取哈希表中指定字段的值
- HMGET key field1 field2...获取所有给定字段的值
- HGETALL key 获取key中所有字段和值
网友评论