Redis介绍以及日常使用

本文涉及的产品
PolarClaw,2核4GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: ​介绍Redis(REmote DIctionary Server)是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、非关系类型的Key-Value数据库。它提供了多种语言的API,如Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等,使得在各种语言环境下使用Redis都变得非常方便。Redis是一个高性能的Key-Value数据库,其性能在很大程度上补偿了如Memcached这类Key-Value存储的不足,并且在某些场景下,它还可以作为关系数据库的良好补充。它支持的数据结构类型

 介绍

Redis(REmote DIctionary Server)是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、非关系类型的Key-Value数据库。它提供了多种语言的API,如Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等,使得在各种语言环境下使用Redis都变得非常方便。

Redis是一个高性能的Key-Value数据库,其性能在很大程度上补偿了如Memcached这类Key-Value存储的不足,并且在某些场景下,它还可以作为关系数据库的良好补充。它支持的数据结构类型不仅限于简单的Key-Value,还包括list(链表)、set(集合)、zset(有序集合)和hash(散列)等,这些数据结构类型都支持丰富的操作,如push/pop、add/remove以及取交集、并集、差集等,且这些操作都是原子性的。此外,Redis还支持各种排序功能。

在数据持久化方面,Redis可以将内存中的数据定期写入磁盘,或者将修改操作写入追加的记录文件,以此实现了数据的持久化。这确保了即使在系统重启后,数据也可以被重新加载和使用。

Redis还提供了数据备份功能,即master-slave模式的数据备份。在这种模式下,数据可以从主服务器同步到任意数量的从服务器,从服务器可以是关联其他从服务器的主服务器。这种机制使得Redis可以执行单层树复制,对读取操作的可扩展性和数据冗余提供了很大帮助。

特点

高性能:Redis将数据存储在内存中,因此具有快速的读写性能。它使用了基于内存的数据结构和优化的算法,使得它能够每秒处理数十万次读写操作。

数据持久化:虽然Redis主要在内存中操作数据,但它也支持数据的持久化。具体来说,Redis支持两种数据持久化方式,即RDB(快照)和AOF(日志)。RDB是将内存中的数据定期保存到磁盘上的二进制文件,而AOF则是将数据修改操作记录为追加日志文件。这些功能可以在服务器重启或崩溃后恢复数据。

键值存储:Redis使用键值对存储数据,其中键(Key)是一个唯一的标识符,值(Value)可以是各种数据类型,如字符串、哈希表、列表、集合、有序集合等。这种设计使得Redis可以灵活地应对各种应用场景。

发布订阅模式:Redis支持发布与订阅模式(Pub/Sub),允许客户端订阅一个或多个频道,并在有新消息发布到频道时接收通知。这使得它非常适用于实时消息推送和事件发布/订阅模式。

分布式缓存:Redis提供了分片(Sharding)和复制(Replication)功能,使得它可以在多台服务器上进行水平扩展和高可用性部署。分片将数据分成多个分片存储在不同的节点上,而复制则是将数据复制到多个节点实现冗余和故障转移。

原子性操作:Redis的所有操作都是原子性的,支持事务。所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。

安装(Windows)

由于Redis是绿色软件(解压即用),在官网即可看到Linux的安装包,但是官网没有Windows的,因此此处以Windows作为示例,安装包网址如下Releases · microsoftarchive/redis · GitHub

下载Redis-x64-<版本号>.zip 后解压到需要的目录即可

image.gif 编辑

双击redis-server.exe即可打开,然后再打开redis-cli.exe,注意此时两个窗口都应该打开,可以简单输入一个指令  keys *  来检测是否正常

简单配置

修改端口

在redis.windows.conf中

image.gif 编辑

修改port 后的值,可以改变redis-server的监听端口

设置密码

依旧在redis.windows.conf中

image.gif 编辑

将386行的注释去掉,然后修改 requirepass 后的值,将foobared修改为你的密码,然后重启redis-server即可

注意

如果想让redis读取conf文件,就要在命令行中输入  

redis-server.exe redis.windows.conf

指令,来明确redis-server指定的配置文件

同时,redis-cli的打开方式也应该为命令行中输入

redis-cli.exe -h localhost -p 9999 -a foobared

来指定ip(可选)以及端口,其中 -h 用与指定ip, -p用于指定端口,你应该修改为你的实际ip以及端口。

使用

String

设置值:使用SET命令可以设置键的值。如果键已经存在,SET命令会更新键的值。如果键不存在,SET命令会创建一个新键。

SET key value

获取值:使用GET命令可以获取键的值。

GET key

获取值的长度:使用STRLEN命令可以获取字符串值的长度。

STRLEN key

追加值:使用APPEND命令可以在现有值的末尾追加字符串。

APPEND key value

自增/自减:使用INCR和DECR命令可以对整数值进行递增和递减操作。

INCR key

DECR key

设置并返回旧值:使用GETSET命令可以设置键的新值,并返回旧值。

GETSET key newvalue

批量设置/获取:使用MSET和MGET命令可以一次性设置或获取多个键值对。

MSET key1 value1 key2 value2 ...

MGET key1 key2 ..

设置值并设置过期时间:使用SETEX命令可以设置键的值,并指定键的过期时间(以秒为单位)。

SETEX key seconds value

设置值仅当键不存在:使用SETNX命令可以设置键的值,但仅当键不存在时。如果键已存在,则SETNX命令不会执行任何操作。

SETNX key value

字符串的子串操作:使用GETRANGE命令可以获取字符串的子串。

GETRANGE key start stop

设置字符串的子串:使用SETRANGE命令可以设置字符串的子串。

SETRANGE key offset value

示例

image.gif 编辑

List

在列表左端插入元素:使用LPUSH命令将一个或多个值插入到列表的左边。如果键不存在,则创建一个空列表,然后进行LPUSH操作。

LPUSH key value1 [value2 ...]

在列表右端插入元素:使用RPUSH命令将一个或多个值插入到列表的右边。

RPUSH key value1 [value2 ...]

移除并获取列表左端的元素:使用LPOP命令移除并返回列表的左端元素。如果列表没有元素,则返回nil。

LPOP key

移除并获取列表右端的元素:使用RPOP命令移除并返回列表的右端元素。

RPOP key

获取列表长度:使用LLEN命令获取列表的长度。

LLEN key

获取列表指定范围的元素:使用LRANGE命令获取列表指定范围内的元素。范围可以通过起始索引和结束索引指定,索引从0开始,也可以是负数表示从列表尾部开始。

LRANGE key start stop

lrange key 0 -1 可以显示key列表的全部元素

移除列表中的元素:使用LREM命令移除列表中指定数量的指定值。

LREM key count value

修剪列表:使用LTRIM命令修剪列表,使其只保留指定范围内的元素。

LTRIM key start stop

获取列表指定索引位置的元素:使用LINDEX命令获取列表中指定索引位置的元素。

LINDEX key index

在列表指定位置前或后插入元素:使用LINSERT命令在列表的指定元素前或后插入一个新元素。

LINSERT key BEFORE|AFTER pivot value

将列表中的一个元素移动到另一个列表:使用RPOPLPUSH命令将源列表的右端元素弹出,并插入到目标列表的左端。

RPOPLPUSH source destination

示例

image.gif 编辑

image.gif 编辑

Set

添加元素:使用SADD命令向集合中添加一个或多个元素。如果元素已存在于集合中,则添加操作将忽略该元素。

SADD key member1 [member2 ...]

移除元素:使用SREM命令从集合中移除一个或多个元素。如果元素不存在于集合中,则移除操作将被忽略。

SREM key member1 [member2 ...]

获取集合的所有元素:使用SMEMBERS命令获取集合中的所有元素。

SMEMBERS key

判断元素是否存在于集合中:使用SISMEMBER命令判断指定元素是否存在于集合中。如果元素存在,则返回1;否则返回0。

SISMEMBER key member

获取集合的元素个数:使用SCARD命令获取集合中元素的个数。

SCARD key

随机获取集合中的一个元素:使用SRANDMEMBER命令随机获取集合中的一个元素。如果指定了count参数并且为正数,则返回count个随机元素(不重复)。如果count参数为负数,则返回count个随机元素(允许重复)。

SRANDMEMBER key [count]

从集合中随机移除并返回一个元素:使用SPOP命令随机移除并返回集合中的一个元素。如果集合为空,则返回nil。

SPOP key

集合的交集、并集和差集

  • 使用SINTER命令获取多个集合的交集。
  • 使用SUNION命令获取多个集合的并集。
  • 使用SDIFF命令获取第一个集合相对于其他集合的差集。

SINTER key1 [key2 ...]

SUNION key1 [key2 ...]

SDIFF key1 [key2 ...]

将集合中的元素移动到另一个集合:使用SMOVE命令将源集合中的一个元素移动到目标集合中。如果目标集合已包含该元素,则SMOVE命令只是简单地从源集合中删除该元素。

SMOVE source destination member

示例

image.gif 编辑

image.gif 编辑

zSet

Redis的zSet(有序集合)数据类型提供了一系列的操作,这些操作允许你添加、删除、查找、更新和排序集合中的元素。有序集合与普通集合的主要区别在于每个元素都会关联一个分数(score),这个分数用于在集合中对元素进行排序。

添加元素:使用ZADD命令向有序集合中添加一个或多个元素,每个元素都关联一个分数。如果元素已存在,则更新其分数。

ZADD key score1 member1 [score2 member2 ...]

获取集合的元素个数:使用ZCARD命令获取有序集合中元素的个数。

ZCARD key

获取指定分数范围的元素:使用ZRANGE命令获取有序集合中指定分数范围内的元素。默认情况下,元素按分数从低到高排序。

ZRANGE key start stop [WITHSCORES]

获取指定排名范围的元素:使用ZREVRANGE命令获取有序集合中指定排名范围内的元素。默认情况下,元素按分数从高到低排序。

ZREVRANGE key start stop [WITHSCORES]

删除元素:使用ZREM命令从有序集合中删除一个或多个元素。

ZREM key member1 [member2 ...]

获取元素的分数:使用ZSCORE命令获取有序集合中指定元素的分数。

ZSCORE key member

增加或减少元素的分数:使用ZINCRBY命令增加或减少有序集合中指定元素的分数。

ZINCRBY key increment member

获取指定分数范围的元素个数:使用ZCOUNT命令获取有序集合中指定分数范围内的元素个数。

ZCOUNT key min max

获取元素的逆排名:使用ZREVRANK命令获取有序集合中指定元素的排名(按分数从高到低)。

ZREVRANK key member

获取分数最高的元素:使用ZREVRANGE命令获取有序集合中分数最高的元素。

ZREVRANGE key 0 0

获取分数最低的元素:使用ZRANGE命令获取有序集合中分数最低的元素。

ZRANGE key 0 0

返回指定分数范围内的元素:使用ZRANGEBYSCOREZREVRANGEBYSCORE命令可以移除并返回指定分数范围内的元素。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

示例

image.gif 编辑

Hash

添加或更新字段:使用HSET命令向hash表中添加一个或多个字段及其值。如果字段已存在,则更新其值。

HSET key field value [field value ...]

获取字段值:使用HGET命令获取存储在hash表中指定字段的值。

HGET key field

获取所有字段和值:使用HGETALL命令获取hash表中指定key的所有字段和值。

HGETALL key

获取所有字段:使用HKEYS命令获取hash表中所有字段的名称。

HKEYS key

获取所有值:使用HVALS命令获取hash表中所有字段的值。

HVALS key

获取字段数量:使用HLEN命令获取hash表中字段的数量。

HLEN key

判断字段是否存在:使用HEXISTS命令查看hash表key中指定的字段是否存在。

HEXISTS key field

删除字段:使用HDEL命令删除hash表中的一个或多个字段。

HDEL key field [field ...]

只在字段不存在时设置字段值:使用HSETNX命令设置hash表的字段值,但仅当字段不存在时。

HSETNX key field value

示例

image.gif 编辑

目录
相关文章
|
缓存 NoSQL API
什么是 Redis?为什么你应该关心它?
Redis 是一种基于内存的高性能数据存储工具,能有效缓解数据库压力,提升应用响应速度。它通过缓存常用数据、实时更新信息和管理排行榜等功能,帮助系统轻松应对高并发场景。本文以一家火爆的冰淇淋店为例,生动讲解了 Redis 的工作原理及其优势。无论你是开发者还是创业者,Redis 都是提升系统性能的绝佳选择。结合 Apipost 工具,还能更高效地构建 Redis 相关 API,让复杂任务变得简单快捷。
1935 17
|
SQL 存储 分布式计算
查询队列(Query Queue)快速入门
本文由钟昌宏(大宏)分享,主题为Hologres 3.0新功能——Hologres查询队列(Query Queue)的使用场景、基本用法及入门实践。内容涵盖四个部分:查询队列的基本介绍、并发控制与排队能力、查询隔离与熔断,以及如何在管控台观察计算组或实例使用查询队列的情况。通过分类器管理、匹配规则等机制,实现对不同类型Query的灵活控制,并结合Serverless Computing提升系统稳定性与成功率。适用于数据写入与查询任务的优化场景。
|
人工智能 安全 API
这款流行 AI 工具被盗用挖取加密货币,这些隐患你需要知道
Docker 镜像被注入挖矿脚本并不是个别现象,而是一个需要引起重视的安全问题,本文向大家分享下 Higress 防范此类风险的相关经验。
563 106
|
SQL 存储 监控
Hologres诊断与优化快速入门
本文由赵红梅(Hologres PD)撰写,分享如何利用诊断与调优工具提升SQL和数据库异常的全方位诊断能力,增强实例稳定性。内容涵盖五个部分:事前通过监控指标实时监控;事中通过活跃日志发现并处理问题;事后通过慢Query日志与Query洞察诊断性能瓶颈;成本治理借助表管理工具优化资源;以及利用诊断工具实现长期稳定性治理。具体包括CPU、内存、I/O等监控指标设置,慢Query优化,错Query治理,SQL诊断报告生成,表Meta问题修复及表索引诊断报告的应用,全面覆盖实例监控、问题定位、性能优化和成本控制等方面。
|
Linux
68Linux - 解决CentOS启动卡住了,提示starting auditd: [failed]
68Linux - 解决CentOS启动卡住了,提示starting auditd: [failed]
462 0
|
分布式计算 Hadoop 关系型数据库
dolphinscheduler搭建
先根据伪集群来部署、部署中参考非伪集群 1、mysql数据库 mysql -h主机地址 -u用户名 -p 2、查看等 less:G、上下按键、ctrl+b、ctrl+f、q find / -iname '*mysql*' 更改目录所有者 chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin /usr/apache-dolphinscheduler-3.1.0-bin/tools/libs 里面也需要mysql驱动
276 1
|
Unix Linux
扩展正则表达式
扩展正则表达式
320 4
|
存储 SQL 算法
ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析
VersionedCollapsingMergeTree是ClickHouse的一种优化引擎,扩展了MergeTree,支持多线程异步插入和高效的数据折叠。它通过Sign和Version列处理对象状态的变化,Sign表示行的状态(正向或撤销),Version追踪状态版本。引擎自动删除旧状态,减少存储占用。在查询时,需注意可能需使用GROUP BY和聚合函数确保数据折叠,因为ClickHouse不保证查询结果已折叠。文章还提供了建表语法、使用示例和相关资源链接。
724 0
|
机器学习/深度学习 前端开发 算法
阿里妈妈展示广告引擎新探索:迈向全局最优算力分配
在绿色计算的大背景下,算力分配将朝着更加高效和智能的方向持续演进。本文将介绍阿里妈妈展示广告引擎在全局视角下优化算力分配的新探索,让在线引擎像变形金刚一样灵活强悍。算力在提倡节能减排,降本增效,追求绿色技术的大趋势下,充分利用好算力资源,尤其是在阿里妈妈展示广告引擎这种使用近百万core机器资源的业...
1495 0
阿里妈妈展示广告引擎新探索:迈向全局最优算力分配
|
Linux 网络安全
Linux系统之NTP服务器配置
Linux系统之NTP服务器配置
3199 1