综述

什么是Redis

Redis官网——Redis.io

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安装

  1. 更新列表
    安装软件之前,最好更新系统的包列表打开终端输入以下命令
	sudo apt update
  1. 安装Redis:
    使用apt管理器安装Redis。在终端输入以下命令
	sudo apt install redis-server
  1. 验证Redis安装
    安装完成后,可以通过检查Redis服务状态验证是否安装成功。输入以下命令
   sudo systemctl status redis-server

如果Redis服务正在运行,你将看到状态为”active (running)”。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

   sudo nano /etc/redis/redis.conf

这里,你可以根据需要更改各种设置,例如内存使用限制持久选项等。

  1. 启动Redis服务
    如果Redis服务没有自动启动,你可以使用以下命令手动启动它:
   sudo systemctl start redis-server

要使Redis在系统启动自动启动,可以使用以下命令

   sudo systemctl enable redis-server
  1. 测试Redis:
    安装完成后,你可以测试Redis是否正常工作。在终端输入redis-cli然后在Redis提示符下输入ping,如果一切正常,你将收到PONG的回应。
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果要配置外网访问执行sudo ufw allow 6378配置相应的端口映射 / 端口开放 / 内网穿透即可

RedisInsight的安装(可选)

数据库连接具有很多种,比如JetbrainDataGripMysql官方MysqlWorkbanch,如果你想的话,也可以直接使用redis-cli进行操作,但是如果你想要官方的使用体验,可以安装RedisInsight

  1. 安装好后界面如图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 添加数据库连接:(如果你是部署连接都在Ubuntu上,那么设置都不需要动)外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 界面如图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. 点击左侧WorkBench外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 准备完成。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


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。

注意:Redis大小敏感

GET name

返回相应的Value

"gulugulu1103"

如果GET命令后面的Key未定义,则会返回(nil)

DEL 删除

使用DEL命令+Key

DEL name

删除成功,则会返回(interger) 1
删除失败,则会返回(interger) 0

删除失败的原因基本上是两种:

  1. Key不存在
  2. Key被占用

EXISTS 判断是否存在Key

EXISTS name

存在,返回(interger) 1
若不存在,返回(interger) 0

SETNX 不替换设置

SETNX name gulugulu1104

若成功替换,则返回(interger) 1
失败替换,则返回(interger) 0

KEYS 查询库中有哪些Key

使用KEYS + pattern进行查询

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 ...]

–> (interger) 列表长度

LRANGE & RRANGE 查询列表内容

LRANGE key start stop
RRANGE key start stop

start <– 0 表示第一个元素
stop <– -1 表示最后一个元素
start > stop,–> (empty list or set)

LPOP &amp; 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)。

Tips:集合(Set)相关的命令都是以S开头的。

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),非常适合于存储和处理对象属性。哈希中的字段是唯一的,但值可以重复

Tips:哈希(Hash)相关的命令都是以H开头的。

HSET 添加或更新字段

HSET key field value [field value ...]
  • 如果字段已存在于哈希key中,值会被更新。
  • 如果字段不存在,则字段会被创建设置值。

–> (integer) 返回新增字段的数量。

HGET 获取字段的值

HGET key field

–> 返回哈希表中指定字段的值。
如果字段不存在,–> (nil)

HMSET 设置多个字段的值

HMSET key field1 value1 [field2 value2 ...]

–> 同时设置一个或多个字段的值。
–> 返回 OK。

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进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注