Redis简介
Redis 是一个基于内存的 key-value
结构数据库(mysql 的数据是存放在磁盘上)
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品、咨询、新闻等访问量比较大的数据)
Redis数据类型
Redis 存储的是 key-value
结构的数据,其中 key
是字符串类型,value
有 5 种常用的类型。
- 5 种常用数据类型
- 字符串 string
- 哈希 hash
- 列表 list
- 集合 set
- 有序集合 sorted set / zset
- 各种数据类型的特点
- 字符串(string):普通字符串,Redis 中最简单的数据类型
- 哈希(hash):也叫散列,类似于 Java 中的 HashMap 结构
- 列表(list):按照插入顺序排序,可以有重复元素,类似 Java 中的 LinkedList
- 集合(set):无序集合,没有重复元素,类似于 Java 中的 HashSet
- 有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素
Redis常用命令
- 字符串操作命令
SET key value
:设置指定 key 的值(插入数据)GET key
:获取指定 key 的值SETEX key seconds value
:设置指定 key 的值,并将 key 的过期时间设为 seconds 秒(适用于短信验证码)SETNX key value
:只有在 key 不存在时设置 key 的值(分布式锁)
- 哈希操作命令
HSET key field value
:将哈希表 key 中的字段 filed 的值设为 valueHGET key field
:获取存储在哈希表中指定字段的值HDEL key field
:删除存储在哈希表中的指定字段HKEYS key
:获取哈希表中所有字段HVALS key
:获取哈希表中所有值
- 列表操作命令
LPUSH key value1 [value2]
:将一个或多个值插入到列表头部(列表左侧);RPUSH
是插入到列表尾部(列表右侧)- 举个例子,执行
LPUSH mylist a b c
后,列表为:[c, b, a]
(从头部插入)
- 举个例子,执行
LRANGE key start stop
:获取列表范围内的元素- 执行
LRANGE mylist 0 -1
返回的是列表内的所有元素
- 执行
RPOP key
:移除并获取列表最后一个元素(列表右侧)LLEN key
:获取列表长度
- 集合操作命令(是 string 类型元素的集合)
SADD key member1 [member2]
:向集合添加一个或多个成员SMEMBERS key
:返回集合中的所有成员SCARD key
:获取集合的成员数SINTER key1 [key2]
:返回给定所有集合的交集SUNION key1 [key2]
:返回所有给定集合的并集SREM key member1 [menber2]
:删除集合一个或多个成员
- 有序集合操作命令(是 string 类型元素的集合,每个元素会关联一个 double 类型的分数)
ZADD key score1 member1 [score2 menber2]
:向有序集合添加一个或多个成员ZRANGE key start stop [WITHSCORES]
:通过索引区间返回有序集合中指定区间内的成员ZINCRBY key increment member
:有序集合中对指定成员的分数加上 incrementZREM key member [member]
:移除有序集合中的一个或多个成员
- 通用命令(不分数据类型,都可以使用的命令)
KEYS pattern
:查找所有符合给定模式(pattern)的 keyEXISTS key
:检查给定 key 是否存在TYPE key
:返回 key 所存储的值的类型DEL key
:该命令用于在 key 存在时删除 key