Redis 是一个开源的内存数据库,支持多种数据结构,常用于缓存、会话管理、实时分析等场景。Redis 提供了五种基本的数据类型:字符串、 列表、 集合、 散列/哈希、 有序集合。这篇博客,我们来详细介绍这五种数据类型,并且如何使用它们。
目录
一、字符串
1.1 设置值和获取值
1.2 判断key是否存在
1.3 追加字符串和获取字符串的长度
1.4 对value进行自增1和自减1操作
1.5 设置加减的步长
1.6 获取字符串某一段的内容/修改字符串某一段的内容
1.7 设置过期时间,查看剩余时间
1.8 同时设置或者获取多个值
1.9 先获取值,在设置值
1.10 总结
二、列表
2.1 从列表list的左边/右边插入值
2.2 获取指定范围的值
2.3 从列表list的左边/右边移除值
2.4 获取指定下标的值
2.5 获取列表中的元素个数
2.6 移除列表中的元素
2.7 将列表1的最后一个元素移动到列表2中
2.8 修改对应下标的列表中的值
2.9 在列表中的任意指定值的前后位置插入值
2.10 小结
三、集合
3.1 往集合中添加值
3.2 获取集合中的所有值
3.3 判断某个值是否在集合中
3.4 获取set中元素的个数
3.5 删除集合中的值
3.6 从集合中获取随机值
3.7 随机删除指定个数的元素
3.8 将指定的元素从一个集合移动到另一个集合中
四、哈希
4.1 设置或者获取一个hash的值
4.2 设置或者获取多个hash的值
4.3 获取hash中的所有值
4.4 删除指定field的hash键值对
4.5 获取hash的键值对的个数
4.6 判断hash中的字段是否存在
4.7 获取hash中所有的字段或者值
4.8 给hash中指定字段的值加上一个增量
4.9 添加一个哈希值
4.10 小结
五、有序集合
5.1 向有序集合添加一个或多个成员
5.2 获取zset中一个范围的值
5.3 移除zset中指定的元素
5.4 查看zset中的元素个数
一、字符串
Redis 中最简单和最常用的数据类型。可以存储任何类型的数据,例如字符串、整数、浮点数等。
1.1 设置值和获取值
格式:
- 设置值: set key value
- 获取值: get key
1.2 判断key是否存在
格式: exists key
1.3 追加字符串和获取字符串的长度
- key存在,直接在后面追加字符串,如果key不存在,相当于set命令,格式: append key value
- 获取字符串的长度,格式: strlen key
1.4 对value进行自增1和自减1操作
- 对value进行自增1操作(数值类型),格式: incr key
- 对value进行自减1操作(数值类型),格式: decr key
1.5 设置加减的步长
- 设置加的步长,格式: incrby key num
- 设置减的步长,格式: decrby key num
1.6 获取字符串某一段的内容/修改字符串某一段的内容
- 获取字符串某一段的内容:getrange key start end ,start和end是起始位置和结束位置,从0开始。
- 从指定位置开始替换字符串的值,格式: setrange key offset value,offset是起始位置计算的偏移量,value是要修改的值。
1.7 设置过期时间,查看剩余时间
- 设置过期时间,格式: setex key seconds value ,以秒为单位
- 查看剩余时间,格式: ttl key
1.8 同时设置或者获取多个值
- 同时设置多个值,格式: mset key1 value1 key2 value2 ...
- 同时获取多个值,格式:mget key1 key2...
1.9 先获取值,在设置值
先获取值,在设置值,格式: getset key value
1.10 总结
String类似的使用场景:value除了是字符串也可以是数字!
- 计数器
- 统计多单位的数量
- 对象缓存存储
二、列表
它本质上是有序的字符串列表,类似于链表。可以在列表的两端进行推入和弹出操作。在Redis中,我们可以用list完成栈、队列、阻塞队列 ,所有的list命令都是用l开头的。
2.1 从列表list的左边/右边插入值
- 从list的左边插入值,格式: lpush key value
- 从list的右边插入值,格式: rpush key value
2.2 获取指定范围的值
lrange获取指定范围的值,格式: lrange key start stop
2.3 从列表list的左边/右边移除值
- 从列表的左边移除值,格式: lpop key
- 从列表的右边移除值,格式: rpop key
2.4 获取指定下标的值
获取指定下标的值,格式: lindex key index
2.5 获取列表中的元素个数
获取列表中的元素个数,格式: llen key
2.6 移除列表中的元素
移除列表中count次指定元素,格式: lrem key count value
2.7 将列表1的最后一个元素移动到列表2中
移除列表中最后一个元素,将它添加到另一个列表中,格式: rpoplpush key1 key2
2.8 修改对应下标的列表中的值
根据下标替换列表中的值,格式: lset key index value
2.9 在列表中的任意指定值的前后位置插入值
将某个具体的value插入到列表中某个值的前面或后面,格式: linsert key before|after value new_value
2.10 小结
- 他实际上是一个链表,before or after, left,right都可以插入值
- 如果key不存在,创建新的链表,如果key存在,新增内容
- 如果移除了所有的值,空链表,也代表不存在
- 在两遍插入或者改动值,效率最高!
- 中间元素,相对来说效率会低一点
- 队列: LPOP RPUSH 栈: LPOP LPUSH
三、集合
无序的字符串集合,集合中的值是不能重复的。提供类似数学集合操作的命令,如交集、并集、差集等
3.1 往集合中添加值
给集合中添加值,格式: sadd key value1 value2 ...
3.2 获取集合中的所有值
获取集合中的所有值,格式: smembers key
3.3 判断某个值是否在集合中
判断某个值是否在集合中,格式: sismember key value
3.4 获取set中元素的个数
获取集合中元素的个数,格式: scard key
3.5 删除集合中的值
删除集合中的值,格式: srem key value1 value2....
3.6 从集合中获取随机值
从集合中获取随机值,格式: srandmember key count
3.7 随机删除指定个数的元素
随机删除指定个数个元素,格式: spop key count
3.8 将指定的元素从一个集合移动到另一个集合中
将指定的元素从一个集合中移动到另一个集合中,格式: smove set1 set2 value
四、哈希
Redis 中的哈希(Hash)是一种用于存储键值对集合的数据结构。它类似于编程语言中的哈希表或字典。哈希在 Redis 中非常有用,特别适合存储对象,例如用户信息(ID、姓名、年龄等)。可以将哈希看成是一个Map集合,key-value中的value是一个map集合。
- 字段(Field):哈希中的每个子键,类似于对象的属性名。
- 值(Value):与字段相关联的数据,类似于对象的属性值。
4.1 设置或者获取一个hash的值
- 设置一个hash的值,格式:hset key field1 value1
- 获取一个hash的值,格式:hget key field
4.2 设置或者获取多个hash的值
- 设置多个hash的值,格式: hmset key field1 value1 field2 value2 ...
- 获取多个hash的值,格式:hmget key field1 field2...
4.3 获取hash中的所有值
hgetall key
4.4 删除指定field的hash键值对
删除指定field的hash键值对,格式: hdel key field
4.5 获取hash的键值对的个数
获取hash的键值对的个数,格式: hlen key
4.6 判断hash中的字段是否存在
判断hash中的字段是否存在,格式: hexists key field
4.7 获取hash中所有的字段或者值
- 获取hash中所有的字段,格式: hkeys key
- 获取hash中所有的值,格式: hvals key
4.8 给hash中指定字段的值加上一个增量
hincrby key 增量
4.9 添加一个哈希值
如果不存在,则添加,如果存在,则失败,格式: hsetnx key field value
4.10 小结
hash的应用
- hash中存储经常变更的值:比如用户信息: user : name-value,age-value,sex-value
- hash更适合对象的存储,String更加适合字符串存储
五、有序集合
Redis 中的有序集合(Sorted Set)是一种将集合的元素与一个浮点数分数(score)关联的数据结构。与普通集合(Set)不同,有序集合中的元素是有序的,顺序是由分数决定的。它在需要维护数据顺序并支持范围查询的场景中非常有用。
5.1 向有序集合添加一个或多个成员
添加一个值,格式: zadd key scores value
5.2 获取zset中一个范围的值
获取zset中一个范围的值,格式: zrange key start stop
5.3 移除zset中指定的元素
移除zset中指定的元素,格式: zrem key value
5.4 查看zset中的元素个数
查看zset中的元素个数,格式: zcard key
至此,Redis数据库第二节就介绍完毕,都是一些简单的操作,熟练即可,没有什么难度,更多精彩内容见后期博客!感谢阅读,如果喜欢,点赞加关注!