redis 支持五种数据类型:string hash list set zset
1 string 字符串 一个key对应一个value 二进制安全的,可以包含任何数据如图片或者序列化的对象,最大能存储 512MB
set name 'runoob' 键为 name 值为 runoob
get name
2 hash 哈希 是一个键值对集合key-value,是一个string类型的field 和value的映射表,适合用于存储对象。每个hash可以存储40多亿键值
del name 用于删除用过的key
hmset runoob field1 'a' field2 'b' field3 'c' 设置值
hget runoob field3 获取field 对应的值
3 list 列表 是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部左边或者尾部 右边,每个列表可存储40多亿元素
del runoob
lpush runoob redis
lpush runoob mongodb
lrange runoob 0 10
4 set 集合 string类型的无序集合。集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)
添加一个string元素到key 对应的set集合中,成功返回1,如果元素已经在集合中返回0,如果key对应的set不存在则返回错误
每个集合可存储40多亿个成员,不允许重复的成员
del runoob
sadd runoob redis
sadd runoob mongodb
smembers runoob
5 zset 有序集合 string类型元素的集合,且不允许重复的成员,每个元素都会关联一个double类型的分数,用来为集合中的成员从小到大的排序,
zset成员是唯一的,但分数却可以重复
元素在集合中存在则更新对应的score分数值
del runoob
zadd runoob 0 mongodb
zadd runoob 0 rabitmq
zrangebyscore runoob 0 1000
redis 支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念
是一个字典结构的存储服务器,一个redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。
可以将其中的每个字典都理解成一个独立的数据库
每个数据库对外都是一个从0开始的递增数字命名,客户端与redis建立连接后会自动选择0号数据库,可以随时使用select 命令更换数据库
select 1
flushall 命令可以清空一个redis实例中所有数据库中的数据。
一个空redis实例占用的内存只有1M左右