一:String(字符串)
192.168.0.104:0>set age 78 "OK"
查询:
192.168.0.104:0>get age "78"
二:Hash(哈希)
192.168.0.104:0>HMSET student name "张三" age "100" "OK"
查询name:
192.168.0.104:0>HMGET student name 1) "张三"
三、List(列表)
Redis列表是最简单的字符串列表,按照插入顺序排序。可以添加一元素到列表的头部(左边) 或者尾部(右边)
实例:
插入数据:
192.168.0.104:0>LPUSH name 渣男 "1" 192.168.0.104:0>LPUSH name 渣女 "2" 192.168.0.104:0>LPUSH name 渣男女
获取数据:
192.168.0.104:0>Lrange name 0 10 1) "渣男女" 2) "渣女" 3) "渣男"
效果:
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
四、Set(集合)
1、是String类型的无序集合;
2、集合通过哈希表实现,添加、删除、查询的复杂度都是O(1);
实例:
插入数据:
192.168.0.104:0>Sadd score 100分 "1" 192.168.0.104:0>Sadd score 200分 "1" 192.168.0.104:0>Sadd score 300分 "1" 192.168.0.104:0>Sadd score 100分 "0"
注意:值相同时无法插入,因为集合内的元素是唯一的,第二次插入元素被忽略。
集合的最大成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
获取数据:
192.168.0.104:0>Smembers score 1) "300分" 2) "200分" 3) "100分"
效果:
以上操作使用的是sadd命令和smembers命令,sadd命令添加一个string元素到key对应的set集合中,成功返回1.如果元素已经在集合中存在,则返回0.
五、zset(sorted set:有序集合)
1、zset和set一样也是string类型元素的集合,且不允许重复的成员。
2、不同的是每个元素都会关联一个double类型的分数。redis可以通过分数来为集合中成员进行从小到大的排序。
3、zset中的成员是唯一的,但是分数score是可以重复的。
实例:
插入数据:
192.168.0.104:0>zadd myzadd 10 v1 20 v2 30 v3 "3" 192.168.0.104:0>zadd myzadd 40 v1 "0" 192.168.0.104:0>zadd myzdd 30 v4
查询数据:
192.168.0.104:0>zrange myzadd 0 3 1) "v2" 2) "v3" 3) "v1"
效果:
各个类型的应用场景:
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、带权重的消息队列