redis的五种常用类型
redis是什么
Redis是一种开源(采用BSD许可证)、用作数据库、缓存、消息代理和流式引擎的内存数据结构存储系统。Redis提供了诸如字符串、哈希表、列表、集合、带范围查询的有序集合、位图、HyperLogLog、地理空间索引和流等数据结构。Redis内置了复制、Lua脚本、LRU(最近最少使用)淘汰、事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性以及通过Redis Cluster实现自动分区。
以上是官网对Redis的介绍,官网地址:https://redis.io/docs/about/
redis的五种基本数据结构
String
字符串类型是Redis中最为基础的数据类型,每个Key最大可储存512MB,常用来储存文本或者二进制数据。
常用用法:
序号 | 指令 | 解释 | 案例 |
---|---|---|---|
1 | set key vaule/get key | 设置指定key的值/获取指定key的值 | |
2 | mget key1 key2 …keyn | 获取所有指定key的值 | mget key1 key2 |
3 | strlen key | 返回key所存储的字符串长度 | strlen myKey |
4 | incr key | 将key中存储的 | incr mycounter |
5 | decr key | 将key中存储的数字值-1 | decr mycounter |
6 | setnx key value | 在key不存在的时候才可以设置key的值 | setnx lock 任意字符串 |
- **setnx:**如果key存在,返回0, 如果key不存在,返回1
key
是要设置的键名。value
是要设置的字符串值。- 如果指定的键
key
不存在,它会将键key
的值设置为value
。- 如果指定的键
key
已经存在,那么SETNX
不执行任何操作,不改变现有值。这个命令通常用于确保你设置的键不会被覆盖,只有当键不存在时,才会进行设置。这在分布式锁、计数器初始化等场景中非常有用。
list
在 Redis 中,列表(List)是一种有序的数据结构,允许存储多个元素,并且保持元素的插入顺序。Redis 提供了多个命令来操作列表数据类型,以下是一些常用的列表命令以及它们的用法:
序列 | 命令 | 描述 |
---|---|---|
1 | llen key | 获取列表长度 |
2 | lpush key value1… value2 | 将一个或多个值插入到列表key的左边。 |
3 | lpop key | 移出并获取左边列表的第一个元素 |
4 | lrange key start stop | 获取列表指定范围内的元素 |
5 | lrem key count value | 移除列表元素 |
6 | rpush key value1… value2 | 尾部添加 |
7 | rpop key [count] | 尾部移除[count]元素 |
8 | rpush key value1 [value2 …] | 将一个或多个值插入到列表key的右边 |
lrem key count value解释
key
是要操作的列表的名称。count
表示要删除的元素数量,有三种取值:
- 0:删除所有匹配的元素。
- 正整数:删除最多 count 个匹配的元素。
- 负整数:删除最多 count 个匹配的元素,但是从列表的尾部向头部查找匹配元素。
value
是要从列表中删除的元素的值。
Hash
hash是存储键值对的无序集合,适合存储对象的属性。可以对单个哈希键执行设置、获取、删除操作,也可以对整个哈希执行获取全部键值对等操作。
序列 | 命令 | 描述 |
---|---|---|
1 | hlen key | 获取哈希表的字段数量 |
2 | hset key field value | 设置哈希表中指定字段的值 |
3 | hget key field | 获取哈希表中指定字段的值 |
4 | hdel key field1 [field2 …] | 删除哈希表中一个或多个字段 |
5 | hgetall key | 获取哈希表中所有字段和值的列表 |
6 | hexists key field | 检查哈希表中指定字段是否存在 |
7 | hmget key field1 [field2 …] | 获取哈希表中多个字段的值 |
8 | hkeys key | 获取哈希表中所有字段的列表 |
9 | hvals key | 获取哈希表中所有值的列表 |
set
集合(Set):存储唯一、无序的元素集合,不允许重复。可以对集合进行添加、删除、查找、交集、并集等操作。
序号 | 命令 | 描述 | 示例 |
1 | SADD key member1 [member2 …] | 向集合中添加一个或多个成员。 | SADD myset "apple" "banana" |
2 | SREM key member1 [member2 …] | 从集合中移除一个或多个成员。 | SREM myset "banana" |
3 | SMEMBERS key | 获取集合中的所有成员。 | SMEMBERS myset |
4 | SISMEMBER key member | 检查成员是否存在于集合中。 | SISMEMBER myset "apple" |
5 | SCARD key | 获取集合中成员的数量。 | SCARD myset |
6 | SINTER key1 key2 [key3 …] | 获取多个集合的交集。 | SINTER set1 set2 |
7 | SUNION key1 key2 [key3 …] | 获取多个集合的并集。 | SUNION set1 set2 |
8 | SDIFF key1 key2 [key3 …] | 获取多个集合的差集。 |
Sorted Set(Zset)
有序集合(Sorted Set):存储唯一、有序的元素集合,每个元素都关联一个分数,用于根据分数排序。可以对有序集进行添加、删除、查找、按照分数范围获取等操作。
序号 | 命令 | 描述 | 示例 |
---|---|---|---|
1 | ZADD key score1 member1 [score2 member2 …] | 向有序集合中添加一个或多个成员,并分配分数。 | ZADD highscores 100 "Player1" 200 "Player2" |
2 | ZREM key member1 [member2 …] | 从有序集合中移除一个或多个成员。 | ZREM highscores "Player2" |
3 | ZRANGE key start stop [WITHSCORES] | 获取有序集合中指定范围内的成员,可选择返回分数。 | ZRANGE highscores 0 -1 WITHSCORES |
4 | ZREVRANGE key start stop [WITHSCORES] | 获取有序集合中指定范围内的成员,逆序排列。 | ZREVRANGE highscores 0 -1 WITHSCORES |
5 | ZSCORE key member | 获取成员的分数。 | ZSCORE highscores "Player1" |
6 | ZRANK key member | 获取成员在有序集合中的排名(从低到高)。 | ZRANK highscores "Player1" |
7 | ZREVRANK key member | 获取成员在有序集合中的排名(从高到低)。 | ZREVRANK highscores "Player1" |
8 | ZCARD key | 获取有序集合中的成员数量。 | ZCARD highscores |
9 | ZCOUNT key min max | 获取分数范围内的成员数量。 | ZCOUNT highscores 100 200 |
以上仅仅列举了redis较为常用的五种数据类型的部分指令,如需要详细了解,请查阅https://redis.io/commands/