一、安装和启动
1. 安装Redis
kali linux 的apt 包管理器中自带redis下载链接,可直接使用apt命令下载,sudo命令作用是普通用户行使root用户权限
# 查看 apt 包管理器 redis 版本
sudo apt | grep redis-server
# 下载并安装redis
sudo apt install redis-server -y
# 查看已经安装的redis-server
sudo dpkg -l redis-server
实操附图:
① 查看可安装的redis-server 版本
② 查看已经安装的redis-server
2. 启动Redis服务
# 查看redis服务状态
sudo systemctl status redis-server
# 设置开机自启
sudo systemctl enable redis-server
# 启动服务
sudo systemctl start redis-server
# 检查服务状态
sudo systemctl status redis-server
实操附图:
①可以看到 redis 未开机自启和未启动服务
②开启开机自启和启动服务
3. 验证Redis版本和运行
# 查看reids版本
redis-cli --version
# 验证redis运行
redis-cli ping
# 成功会返回 "PONG"
# 或者进入redis-cli界面验证
实操附图:
① 查看版本
② 直接使用redis-cli命令验证
③ 进入redis-cli界面验证,退出按 ctrl + c
二、安全配置
1. 配置Redis
编辑配置文件
sudo vim /etc/redis/redis.conf
关键配置项
-
允许远程访问(可选,需谨慎)
修改bind
行:bind 0.0.0.0
-
设置访问密码(增强安全性)
取消注释并修改requirepass
:requirepass your_strong_password
-
关闭保护模式(如果未设置密码需保持开启)
protected-mode yes
保存后重启服务:
sudo systemctl restart redis-server
vim的常用操作
①模式:
命令模式和插入模式
进入插入模式后按esc退到命令模式②插入内容操作(进入插入模式):
按字母 i,I,a,A,o,O 都是插入内容方式③查找内容操作(在命令模式) :
按 /
④退出文件操作(在命令模式) :
qw 保存退出 :q! 不保存退出
实操附图:
① 允许所有机子远程访问(可以具体指定)
远程访问与登陆密码一定一起设置使用
② 添加登陆密码
③ 重新启动服务
2. 测试远程连接
可以远程连接本机子的 ip 地址进行测试
redis-cli -h 192.168.238.150 -p 6379
AUTH wgs
# 输入密码后执行命令测试
实操附图:
① 未设置远程连接的结果
② 设置远程连接未设置登陆密码的结果
③ 设置远程连接和登陆密码的结果
3. 基本使用示例
# 连接到本地Redis
redis-cli
# 或者远程连接redis
redis-cli -h 192.168.238.150 -p 6379
# 验证密码(如果设置了密码)
auth wgs
# 存储数据
set key1 "hello redis"
# 读取数据
get key1
# 退出
exit
实操附图:
4.安全建议
- 仅本地访问:如无需远程连接,保持
bind 127.0.0.1
。 - 使用SSH隧道:替代直接开放端口,更安全。
- 定期备份:Redis数据目录默认在
/var/lib/redis
。 - 监控日志:日志路径
/var/log/redis/redis-server.log
。
故障排查
- 查看日志:
journalctl -u redis-server -f
- 检查端口占用:
ss -tulnp | grep 6379
三、 理论与实操
1、Redis基础概念
①. Redis是什么?
- 内存数据库:数据存储在内存中,读写速度极快(微秒级)。
- 键值存储:以
key-value
形式存储数据,支持多种数据结构。 - 持久化:支持RDB(快照)和AOF(日志)两种持久化方式。
- 单线程模型:基于事件循环,避免多线程竞争,保证原子性。
② Redis适用场景
- 缓存系统(如网页缓存、会话缓存)
- 实时排行榜(有序集合)
- 消息队列(列表/发布订阅)
- 计数器(如网站访问量)
- 分布式锁
2、Redis数据结构与命令
Redis支持5种核心数据结构:字符串、列表、哈希、集合、有序集合。
①. 字符串(Strings)
- 特点:二进制安全,可存储文本、JSON、数字等。
- 常用命令:
SET key value # 设置键值(覆盖原有值) GET key # 获取值 INCR key # 值自增1(原子操作) DECR key # 值自减1 APPEND key value # 追加内容 STRLEN key # 获取字符串长度 MSET key1 val1 key2 val2 # 批量设置 MGET key1 key2 # 批量获取 EXPIRE key 60 # 设置过期时间(秒)
- 实操附图:
②. 列表(Lists)
- 特点:双向链表,支持左右插入/弹出。
- 常用命令:
LPUSH list value # 左端插入 RPUSH list value # 右端插入 LPOP list # 左端弹出 RPOP list # 右端弹出 LRANGE list 0 -1 # 获取全部元素 LLEN list # 获取列表长度 LINDEX list 0 # 获取索引0的元素
- 实操附图:
③. 哈希(Hashes)
- 特点:键值对集合,适合存储对象。
- 常用命令:
HSET user1 name "wgs" # 设置字段及值 HGET user1 name # 获取字段值 HMSET user2 name "wgs" age 25 # 批量设置字段及值 HMGET user2 name age # 批量获取多个字段值 HGETALL user2 # 获取所有字段及值 HDEL user1 name # 删除字段 HEXISTS user1 name # 检查字段是否存在
- 实操附图:
④. 集合(Sets)
- 特点:无序、元素唯一,支持交并差运算。
- 常用命令:
SADD set1 "red" "pink" "blue" # 添加元素 SADD set2 "red" "green" "blue" SMEMBERS set1 # 获取所有元素 SREM set2 "blue" # 删除元素 SISMEMBER set1 "blue" # 检查元素是否存在 SINTER set1 set2 # 交集 SUNION set1 set2 # 并集 SDIFF set1 set2 # 差集 DEL set1 # 删除集合
- 示例:
⑤. 有序集合(Sorted Sets)
- 特点:元素唯一,每个元素关联一个分数(score)用于排序。
- 常用命令:
ZADD sset 100 "red" 90 "blue" 80 "green" # 添加元素 ZRANGE sset 0 -1 WITHSCORES # 按分数升序获取 ZREVRANGE sset 0 -1 WITHSCORES # 按分数降序获取 ZRANK sset "red" # 获取升序排名 ZSCORE sset "red" # 获取分数 ZRANGEBYSCORE sset 90 100 # 获取分数在80~100的元素
- 实操附图:
3、学习资源
①. 官方文档:https://redis.io/documentation
②. Redis命令速查:https://redis.io/commands
以上内容根据deepseek生成教程大纲,由本人进行实操并添加内容验证其能够在kali linux入门 redis 的可行性。