redis的数据类型
各个数据类型应用场景:
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | --- |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |
String(字符串)
List(列表)
1.取出并获取列表中的第一个元素,或阻塞,直到有可用
BLPOP key1 [key2 ] timeout
2.取出并获取列表中的最后一个元素,或阻塞,直到有可用
BRPOP key1 [key2 ] timeout
3.从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用
BRPOPLPUSH source destination timeout
4.从一个列表其索引获取对应的元素
LINDEX key index
5.在列表中的其他元素之后或之前插入一个元素
LINSERT key BEFORE|AFTER pivot value
6.获取列表的长度
LLEN key
7.获取并取出列表中的第一个元素
LPOP key
8.在前面加上一个或多个值的列表
LPUSH key value1 [value2]
9.在前面加上一个值列表,仅当列表中存在
LPUSHX key value
10.从一个列表获取各种元素
LRANGE key start stop
11.从列表中删除元素
LREM key count value
12.在列表中的索引设置一个元素的值
LSET key index value
13.修剪列表到指定的范围内
LTRIM key start stop
14.取出并获取列表中的最后一个元素
RPOP key
15.删除最后一个元素的列表,将其附加到另一个列表并返回它
RPOPLPUSH source destination
16.添加一个或多个值到列表
RPUSH key value1 [value2]
17.添加一个值列表,仅当列表中存在
RPUSHX key value