redis数据类型
redis支持五种数据类型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
string(字符串)
string 是 redis 最基本的类型,一个 key 对应一个value
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg图片或者序列化的对象
string 类型是 Redis 最基本的数据类型,string 类型的值最大512MB
例如: SET key value SET name “jim” SET 和 GET 命令。键为 name,对应的值为 jim。
GET key GET name
hash(哈希)
redis hash 是一个键值(key=>value)对集合
redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
例如:HMSET key key1 value1 key2 value2 HMSET name field1 “Hello” field2 “World”
HGET key key1 HGET name field1
HGET key key2 HGET name field2
DEL key DEL name (删除)
HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。每个 hash 可以存储 232 -1 键值对(40多亿)
list(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
例如: rpush key value1 push name zhangsan 向尾部存储
rpush key value2 push name lisi
rpush key value3 push name wangwu
lrange key lrange name (zhangsan lisi wangwu)123
lpush key value4 push name liming 向头部存储
lrange key lrange name ( liming zhangsan lisi wangwu)4123
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存40多亿个成员)
set(集合)
Redis 的 Set 是 string 类型的
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
sadd命令:添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
例如:sadd key value1
sadd key value2 (存入成功返回1)
sadd key value2 (已存在,存入失败,返回0)
smembers key (返回(1,2)或者(2,1)无序的)
以上实例中 value2添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。最大的成员数为 232 -1(4294967295, 每个集合可存储 40多亿个成员)。
zset(sorted set:有序集合)
redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序
zset 的成员是唯一的,但分数(score)却可以重复
zadd命令:添加元素到集合,元素在集合中存在则更新对应 score
设置失效时间
有时候我们并不希望 redis 的 key 一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销
毁。redis 提供了一些命令,能够让我们对 key设置过期时间,并且让 key过期之后自动删除
设置值时直接设置有效时间
EX 表示以秒为单位
PX 表示以毫秒为单位 EX,PX 不区分大小写
set name jim EX 30 设置失效时间为 30 秒
查看设置后剩余的时间
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)
设置值后设置有效时间
expire 键 时间(秒)
EX 30 设置失效时间为 30 秒
查看设置后剩余的时间
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)
设置值后设置有效时间
expire 键 时间(秒)
pexpire 键 时间(毫秒)