综述
什么是Redis
Redis, 作为一个高性能的键值对数据库,主要应用于以下场景:
这些应用场景展示了 Redis 的灵活性和高性能,使其成为现代Web应用中不可或缺的一部分。
Redis数据结构的实际应用场景
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | – |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1. 最新消息排行等功能(比如朋友圈的时间线) 2. 消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1. 添加、删除,查找的复杂度都是O(1) 2. 为集合提供了求交集、并集、差集等操作 |
1. 共同好友 2. 利用唯一性,统计访问网站的所有独立ip 3. 好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1. 排行榜 2.带权重的消息队列 |
安装 & 配置
Redis在Ubuntu安装
sudo apt update
sudo apt install redis-server
sudo systemctl status redis-server
如果Redis服务正在运行,你将看到状态为”active (running)”。
sudo nano /etc/redis/redis.conf
在这里,你可以根据需要更改各种设置,例如内存使用限制、持久化选项等。
sudo systemctl start redis-server
sudo systemctl enable redis-server
RedisInsight的安装(可选)
数据库连接工具有很多种,比如Jetbrain
的DataGrip
,Mysql
官方的MysqlWorkbanch
,如果你想的话,也可以直接使用redis-cli
进行操作,但是如果你想要官方的使用体验,可以安装RedisInsight
–raw参数
如果你想继续使用Redis
原生的命令行工具,直接在终端上输入redis-cli
即可启动redis
客户端。
redis-cli --raw
--raw
——代表以原始形式来显示内容,Redis的字符串都是以二进制方式存储的,输入中文的话只会输出一堆16进制的代码。使用raw参数可以让客户端自动解码。
# Redis基础语法 ## Redis基本增删查改 ### SET 增加和修改 Redis中的数据都是以Key-Value键值对的形式存储的,使用`SET`命令来设置一个Key-Value键值对: “`SQL SET name gulugulu1103 “` 返回`OK`: “`SQL 127.0.0.1:6379> SET name gulugulu1103 OK “`
GET 查找
使用GET命令+Key。
GET name
返回相应的Value:
"gulugulu1103"
DEL 删除
使用DEL
命令+Key
DEL name
若删除成功,则会返回(interger) 1
若删除失败,则会返回(interger) 0
EXISTS 判断是否存在Key
EXISTS name
若存在,返回(interger) 1
若不存在,返回(interger) 0
SETNX 不替换的设置
SETNX name gulugulu1104
若成功替换,则返回(interger) 1
若失败替换,则返回(interger) 0
KEYS 查询库中有哪些Key
EXISTS *
若没有Key,则返回(empty array)
若有Key,则按列表模式返回所有Key的字符串。
127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
3) "name"
FLUSHALL
删除所有Key**(谨慎使用)**
若删除成功,则返回OK
Redis数据结构
以下不提供具体实例,只提供语法。小写字母均代表抽象定义,如
key
代表键,value
代表值。
下列语法中,[]代表可选参数,…代表可重复
列表(List)
到这里可能有点没反应过来,其实类比编程语言,我们可以把key看成是变量名,把value看成是变量的值,这样就很好理解使用Key-Value Pair去存储Redis中的数据了。
LPUSH & RPUSH 在列表首位添加
LPUSH key value [value ...]
RPUSH key value [value ...]
LRANGE & RRANGE 查询列表内容
LRANGE key start stop
RRANGE key start stop
start <– 0 表示第一个元素
stop <– -1 表示最后一个元素
若start > stop,–> (empty list or set)
LPOP & RPOP 删除元素
LPOP key [count]
RPOP key [count]
[count] <– 默认为1
若count > size,则全部删除
若count == 1,–> 被删元素
若count > 1,–> 被删子列表
LTRIM 仅保留范围内元素
LTRIM key start stop
–> “OK”
LLEN 查看列表长度
LLEN key
–> (interger) 数组长度
若key不存在,–> (interger) 0
集合 (Set)
在Redis中,集合(Set)是由字符串类型元素组成的无序集合。集合是通过哈希表实现的,这意味着添加、删除和查找元素的复杂度都是O(1)。
SADD 添加元素
SADD key member [member ...]
–> (interger) 1 表示成功
–> (interger) 0 表示失败,可能已经包含该元素
SMEMBERS 查看元素
SMEMBERS key
–> 返回该集合中的列表
SISMEMBERS 判断是否在集合中
SISMEMBERS key member
–> (interger) 1 表示存在
–> (interger) 0 表示不存在
SREM 删除元素
SREM key member [member ...]
–> (interger) 1 表示删除成功
–> (interger) 0 表示删除失败,可能是key值不存在或value不存在
集合运算(进阶)
SUNION – 合并集合
SUNION key [key ...]
–> 返回一个集合的并集。不同集合之间的元素互不相同。
SINTER – 交集运算
SINTER key [key ...]
–> 返回一个集合的交集。只包含同时存在于所有给定集合中的元素。
SDIFF – 差集运算
SDIFF key [key ...]
–> 返回一个集合与其他集合的差集。仅包含存在于第一个集合中,但不在其他给定集合中的元素。
SUNIONSTORE – 合并集合并存储
SUNIONSTORE destination key [key ...]
–> 此命令等同于SUNION,但它将结果存储在destination集合中,而不是简单地返回结果集。
SINTERSTORE – 交集运算并存储
SINTERSTORE destination key [key ...]
–> 此命令等同于SINTER,但它将结果存储在destination集合中。
SDIFFSTORE – 差集运算并存储
SDIFFSTORE destination key [key ...]
–> 此命令等同于SDIFF,但它将结果存储在destination集合中。
有序集合 (Sorted Set)
在Redis中,有序集合(Sorted Set)是集合的一种变体,每个元素都会关联一个双精度浮点数分数。Redis正是通过分数来为集合中的元素进行从小到大的排序。有序集合的元素是唯一的,但分数(score)可以重复。
Tips:有序集合(Sorted Set)相关的命令都是以Z开头的。
ZADD 添加或更新元素
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
NX
:只有当成员不存在于有序集合中时,才会添加该成员。
XX
:只有当成员已经存在于有序集合中时,才会更新该成员的分数。
CH
:修改返回值的行为。如果指定了此选项,命令会返回被添加或被更新的成员的数量。如果没有指定CH,则只返回被添加的新成员的数量。
INCR
:用于将分数增加到已有成员的分数上,而不是替换它。如果使用了这个选项,只能指定一个成员及其分数。这个选项实质上将ZADD命令的行为变为一个增量更新,类似于INCRBY命令。
–> (interger) 返回被成功添加或更新的元素的数量。
ZRANGE 查看元素
ZRANGE key start stop [WITHSCORES]
–> 按分数值递增(从小到大)顺序返回有序集合中指定区间内的成员。
若指定了WITHSCORES选项,–>
member
score
member
score
...
ZSCORE 获取成员分数
ZSCORE key member
–> 成员的分数值。
若成员不存在于有序集合中,–> (nil)
ZRANK 查看成员排名(升序)
ZRANK key member
–> 从小到大的索引
ZREVRANK 查看成员排名(降序)
ZREVRANK key member
–> 从大到小的索引
ZINCRBY增加成员分数
ZINCRBY key increment member
–> 该成员增加后的分数
若成员不存在,–> “-1”
ZREM 删除成员
ZREM key member [member ...]
–> (interger) 返回被成功删除的元素的数量。
有序集合运算(进阶)
ZUNIONSTORE – 合并多个有序集合
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
–> 计算给定的一个或多个有序集的并集,并将该并集(结果集)存储在destination中。
ZINTERSTORE – 有序集合交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
–> 计算给定的一个或多个有序集的交集,并将该交集(结果集)存储在destination中。
哈希 (Hash)
在 Redis 中,哈希是一种存储键值对的数据结构,用于存储对象。每个哈希可以存储多个字段(field)和对应的值(value),非常适合于存储和处理对象属性。哈希中的字段是唯一的,但值可以重复。
HSET 添加或更新字段
HSET key field value [field value ...]
HGET 获取字段的值
HGET key field
–> 返回哈希表中指定字段的值。
如果字段不存在,–> (nil)
HMSET 设置多个字段的值
HMSET key field1 value1 [field2 value2 ...]
HMGET 获取多个字段的值
HMGET key field1 [field2 ...]
HDEL 删除字段
HDEL key field [field ...]
–> 删除一个或多个字段。
–> (integer) 返回被成功删除的字段数量。
HEXISTS 检查字段是否存在
HEXISTS key field
–> 检查字段是否存在于哈希表中。
–> (integer) 1 表示存在,0 表示不存在。
HLEN 获取字段数量
HLEN key
–> 返回哈希表中字段的数量。
HKEYS 获取所有字段名
HKEYS key
HVALS 获取所有字段值
HVALS key
–> 返回哈希表中所有字段的值。
HGETALL 获取所有字段和值
HGETALL key
–> 返回哈希表中的所有字段和值。
原文地址:https://blog.csdn.net/gulugulu1103/article/details/134701329
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_15121.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!