文章目录
一:Redis 简介
1.1 什么是Redis
- Redis(Remote Dictionary Server)是一个开源的,基于内存的高性能键值对数据库。
- 支持多种类型的数据结构,如字符串、列表、集合、有序集合和哈希表。
1.2 Redis 的特点
- 高性能:操作速度快,因为数据存储在内存中。
- 持久化:支持将内存中的数据保存到磁盘,防止数据丢失。
- 原子性:Redis的所有操作都是原子性的。
- 丰富的特性:如事务、发布/订阅、队列等。
二:安装和配置Redis
以 Windows中Redis的安装和配置为例
第一步:下载Redis
- 访问Redis的官方下载地址:https://github.com/MicrosoftArchive/redis/releases。
- 选择适合你的Windows系统的Redis版本。注意,Windows版本的Redis是由微软维护的。
- 下载
.zip
文件。
第二步:解压Redis
- 解压下载的Redis压缩包到你选择的目录,例如
d:\install\redis3.0
。
第三步:配置Redis
- 打开解压后的Redis目录,找到
redis.windows.conf
配置文件。 - 使用文本编辑器打开
redis.windows.conf
文件进行编辑。 - 根据需要修改配置项。例如,如果你想更改默认的端口,可以找到
port
项并修改它的值。 - 如果需要设置密码,找到
requirepass
项并设置一个密码。
port 6379 # 默认端口 6379
# requirepass foobared #默认不需要密码
第四步:启动Redis服务器
- 打开命令提示符(CMD)或PowerShell。
- 切换到Redis的
src
目录,例如使用命令:cd D:\install\redis3.0
- 使用以下命令启动Redis服务器:
Ctrl+C
关闭redis-server.exe ./redis.windows.conf
客户端
关闭服务
redis-cli -a ziyu shutdown
第五步:验证Redis安装
- 为了验证Redis是否正在运行,你可以使用
redis-cli
工具:
如果Redis正在运行,你将看到类似以下的提示:redis-cli.exe -h 127.0.0.1 -p 6379
然后我们输入127.0.0.1:6379> ping
ping
,如果出现PONG
说明我们链接成功
如果设置了密码,需要使用密码连接
:
redis-cli.exe -h 127.0.0.1 -p 6379 -a yourpassword
第六步:设置Redis为全局命令
redis-server.exe
这样是使用的默认配置,如果要使用上面我们设置的配置文件,需要指定.conf
文件
三:Redis 常用命令大全和示例
当然,以下是以表格形式展示的Redis命令合集:
类别 | 命令 | 描述 | 示例 |
---|---|---|---|
基本操作 | SET | 设置键的值 | SET mykey “Hello, Redis!” |
GET | 获取键的值 | GET mykey | |
DEL | 删除键 | DEL mykey | |
EXISTS | 检查键是否存在 | EXISTS mykey | |
EXPIRE | 设置键的过期时间(秒) | EXPIRE mykey 3600 | |
TTL | 获取键的剩余生存时间(秒) | TTL mykey | |
字符串操作 | APPEND | 向字符串的末尾追加内容 | APPEND mykey " World" |
STRLEN | 获取字符串的长度 | STRLEN mykey | |
SETRANGE | 从指定偏移量设置字符串的值 | SETRANGE mykey 6 “World” | |
GETRANGE | 获取字符串的子字符串 | GETRANGE mykey 0 3 | |
列表操作 | LPUSH/RPUSH | 将元素推入列表的头部/尾部 | LPUSH mylist “item1” RPUSH mylist “item2” |
LPOP/RPOP | 从列表的头部/尾部弹出元素 | LPOP mylist RPOP mylist | |
LRANGE | 获取列表中指定范围内的元素 | LRANGE mylist 0 -1 | |
LLEN | 获取列表的长度 | LLEN mylist | |
集合操作 | SADD | 向集合添加元素 | SADD myset “item1” |
SREM | 从集合中删除元素 | SREM myset “item1” | |
SISMEMBER | 检查元素是否是集合的成员 | SISMEMBER myset “item1” | |
SMEMBERS | 获取集合的所有成员 | SMEMBERS myset | |
有序集合操作 | ZADD | 向有序集合添加元素 | ZADD myzset 1 “item1” |
ZREM | 从有序集合中删除元素 | ZREM myzset “item1” | |
ZRANGE | 获取有序集合中指定范围内的元素 | ZRANGE myzset 0 -1 | |
ZCARD | 获取有序集合的元素数量 | ZCARD myzset | |
哈希操作 | HSET | 向哈希表添加字段 | HSET myhash field1 “value1” |
HGET | 获取哈希表中字段的值 | HGET myhash field1 | |
HDEL | 删除哈希表中的字段 | HDEL myhash field1 | |
HGETALL | 获取哈希表中的所有字段和值 | HGETALL myhash | |
事务 | MULTI/EXEC | 标记事务的开始/执行事务中的所有命令 | MULTI … EXEC |
WATCH/UNWATCH | 监视/取消监视一个或多个键 | WATCH mykey UNWATCH mykey | |
持久化 | SAVE | 将数据同步到磁盘 | SAVE |
BGSAVE | 异步保存数据到磁盘 | BGSAVE | |
其他命令 | FLUSHDB | 移除数据库中的所有键 | FLUSHDB |
FLUSHALL | 移除所有数据库中的所有键 | FLUSHALL | |
INFO | 获取服务器信息和统计 | INFO | |
MONITOR | 监听所有新接收到的命令 | MONITOR | |
辅助命令 | PING | 检查服务是否运行 | PING |
SELECT | 切换数据库 | SELECT 1 | |
ECHO | 打印一条消息 | ECHO “Hello, Redis!” |
四:Redis 高级特性
4.1 持久化
持久化是Redis确保数据安全的重要特性,允许我们将内存中的数据保存到磁盘,防止数据丢失。
-
RDB(快照式持久化):Redis可以配置为在特定时间间隔内保存数据库的快照。RDB持久化可以非常快速地恢复整个Redis数据库,但缺点是可能会丢失最后一次快照之后的数据。
# 配置RDB持久化 save 60 1000 # 每60秒,如果至少有1000个键被修改,则进行快照保存
本地文件存储位置修改:
dbfilename dump.rdb # 默认名称
dir ./
使用命令手动保存
redis-cli.exe save
-
AOF(追加式文件持久化):与RDB不同,AOF持久化记录每个写操作命令,并将其追加到文件末尾。AOF提供了更好的数据安全性,因为它减少了数据丢失的风险,但可能会影响性能,并且恢复速度可能比RDB慢。
# 配置AOF持久化 appendonly yes # 开启AOF持久化
4.2 事务
事务在Redis中通过MULTI
、EXEC
、WATCH
等命令实现。一个事务可以包含多个命令,它们将被打包在一起,并在EXEC
命令调用时一次性、顺序地执行。
- 使用
MULTI
开始一个事务。 - 将多个命令放入队列。
- 使用
EXEC
执行所有排队的命令。
MULTI
SET msg "Hello, Redis!"
INCR counter
EXEC
WATCH
命令可以用来在事务执行前监视一个或多个键,如果这些键在WATCH
和EXEC
之间被修改,事务将被拒绝执行。
4.3 发布/订阅
发布/订阅模式允许客户端订阅一个或多个频道,当其他客户端向这些频道发送消息时,订阅的客户端会收到消息。
- 使用
PUBLISH
命令发布消息到频道。 - 使用
SUBSCRIBE
命令订阅频道。
PUBLISH channel1 "Hello, World!"
SUBSCRIBE channel1
- 当使用
PUBLISH
向channel1
发送消息时,所有订阅了channel1
的客户端都会收到这条消息。
4.4 管道(Pipelining)
管道技术允许客户端一次性发送多个命令,而不需要等待每个命令的响应。这样可以显著减少网络延迟,提高性能。
PIPELINE
SET key1 "value1"
SET key2 "value2"
GET key1
GET key2
END
PIPELINE
命令开始一个管道。- 多个命令被放入管道。
END
命令结束管道并发送所有命令。
4.5 性能监控
- 使用
redis-cli --stat
或第三方工具监控性能。
五:数据可视化工具(Redis Desktop)
下载地址:
安装
右键操作,添加key,过滤,刷新,删除所有的Key
六:问题
redis运行后不出现图标直接启动
设置了log文件后,就不会出现,需要删除
logfile "./log.text"
# logfile ""