# 设置键的值 SET mykey "Hello Redis" # 获取键的值 GET mykey # 修改键的值 SET mykey "Updated value" # 对值进行递增 INCR counter # 对值进行排序 SORT mylist注意事项:字符串类型的值最大可以存储512MB的数据。
INCR 命令作用于非整型时会报错:(error) ERR value is not an integer or out of range
# 设置哈希键中的字段值 HSET user:1 name "John" HSET user:1 age 30 # 获取哈希键中的字段值 HGET user:1 name # 删除哈希键中的字段及其值 HDEL user:1 age # 获取哈希键中所有的字段和值 HGETALL user:1
注意事项:HSET 命令不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存在来决定要执行的是插入还是更新操作。
# 将值插入列表的头部 LPUSH mylist "one" LPUSH mylist "two" # 将值插入列表的尾部 RPUSH mylist "three" RPUSH mylist "four" # 从列表的头部弹出一个值 LPOP mylist # 从列表的尾部弹出一个值 RPOP mylist # 获取列表中指定范围内的元素 LRANGE mylist 0 -1注意事项:
3.列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
# 向集合添加一个成员 SADD tags "redis" SADD tags "database" # 从集合中移除一个成员 SREM tags "database" # 获取集合中的所有成员 SMEMBERS tags # 获取多个集合的交集 SINTER set1 set2注意事项:
2.集合类型是通过哈希表实现的,操作具有高效的性能,可以快速执行集合运算。
# 向有序集合添加一个成员,并指定其分数 ZADD leaderboard 100 "player1" ZADD leaderboard 200 "player2" # 堆代码 duidaima.com # 从有序集合中移除一个成员 ZREM leaderboard "player2" # 获取有序集合中指定范围内的成员 ZRANGE leaderboard 0 -1 # 获取有序集合中指定成员的分数 ZSCORE leaderboard "player1"注意事项:
2.有序集合类型的操作具有高效的性能,可以快速执行排序和排名相关的操作。
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
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、带权重的消息队列 |