redis
# 前言
使用redis
中遇到的奇葩问题,本文持续更新
# 安装 redis
# 压缩包安装 redis
本次以
7.2.2
版本为例
先安装基础组件
yum install -y gcc tcl
1在官网下载
tar.gz
的安装包,或者通过wget
的方式下载wget https://github.com/redis/redis/archive/7.2.2.tar.gz mv 7.2.2.tar.gz redis-7.2.2.tar.gz
1
2解压
tar -zxvf redis-7.2.2.tar.gz
1编译,通过
make
来编译,make
是自动编译,会根据Makefile
中描述的内容来进行编译。cd redis-7.2.2 make
1
2安装
make install
1默认安装路径是在
/usr/local/bin
目录下启动服务器,来看看安装是否成功。
警告
建议将 redis
源码中的 redis.conf
复制一份到 /etc/redis/
目录下,使用 redis-server /etc/redis/redis.conf
来进行启动
# 基础命令
# 启动
提示
直接使用 redis-server
启动时,是不携带配置文件的裸跑状态
- 前台启动:在任何目录下执行
redis-server
- 后台启动:在任何目录下执行
redis-server &
- 启动 redis 服务时,指定配置文件:
redis-server redis.conf &
,这种主要用于你改了配置文件的情况,比如你把默认端口号改了,你就用这个,正常也用这个
# 修改配置
# 修改密码
上面使用的是手动安装的,所以配置文件的位置在
redis-7.2.2/redis.conf
找到 redis
的配置文件搜索文件中的 # requirepass foobared
取消注释,并将后面的 foobared
替换为自己的密码
# brew
安装 redis
brew install redis
在新版的
brew
的时候安装的软件路径变为了/opt/homebrew/Cellar
目录下
- 添加开机启动项
cp /opt/homebrew/Cellar/redis/7.0.11/homebrew.mxcl.redis.plist /Users/symbol/Library/LaunchAgents/ 替换
symbol
为你的Mac
的用户名
- 修改密码
通常情况下在
/opt/homebrew/etc/redis.conf
下 如果位置不对的话,那么找到homebrew
下redis
的配置文件信息,路径在/opt/homebrew/Cellar/redis/7.2.4/homebrew.mxcl.redis.plist
# 经验
# 查看 redis
服务端版本
redis-server -v
# 或
redis-server --version
2
3
# redis
服务端版本详细说明
Redis server v=7.2.2 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=a37461fb2057967a
v=7.2.2
-Redis
服务端的版本号,这里是7.2.2
版本sha=00000000:0
-Git SHA
标识,用来标识Git
中的某个提交malloc=jemalloc-5.3.0
-Redis
使用的内存分配器,这里是jemalloc 5.3.0
版本bits=64
-Redis
编译时使用的位数,这里是64
位build=a37461fb2057967a
-Redis
的构建ID
# 使用 info
查看服务端版本信息
使用
redis-cli
命令行客户端连接到Redis
服务,输入info server
即可查看Redis
服务详细信息。
info server
# info
数据详解
# Server
redis_version:7.2.2
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a37461fb2057967a
redis_mode:standalone
os:Linux 3.10.0-957.21.3.el7.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:54140
process_supervised:no
run_id:549878e500079affeddfa0298bcedfe5594f47a8
tcp_port:6379
server_time_usec:1697687545567270
uptime_in_seconds:9
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:3188729
executable:/root/redis-7.2.2/redis-server
config_file:
io_threads_active:0
listener0:name=tcp,bind=*,bind=-::*,port=6379
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
redis_version
:Redis
版本,这里是7.2.2
redis_git_sha1
:Git SHA
,这里是00000000
,表示这不是一个Git
版本redis_build_id
:构建ID
,这里是a37461fb2057967a
os
:Redis
运行的操作系统,这里是Linux
arch_bits
:架构(32
或64
位),这里是64
位gcc_version
:编译Redis
时使用的GCC
版本,这里是4.8.5
process_id
:Redis
进程ID
,这里是54140
tcp_port
:Redis
正在监听的TCP
端口,这里是默认的6379
uptime_in_seconds
:Redis
运行时间(秒),这里是9
秒hz
:Redis
服务器的频率,这里是10Hz
lru_clock
:用于LRU
(最近最少使用)算法的时钟周期,这里是3188729
config_file
:Redis
配置文件的路径io_threads_active
:活动I/O
线程的数量,这里是0
# 查看 redis
客户端版本
redis-cli -v
# 或
redis-cli --version
2
3
# redis
客户端版本详细说明
redis-cli 7.2.2
7.2.2
-Redis
客户端的版本号,这里是7.2.2
版本
# 错误
# MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on
# 翻译
Redis
被配置为保存数据库快照,但它目前不能持久化到硬盘。用来修改集合数据的命令不能用。请查看 Redis 日志的详细错误信息。
# 解决方案
vi /etc/sysctl.conf
## 添加一个配置
vm.overcommit_memory = 1
## 保存后然后重启
2
3
4
5
# 提示 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
这是因为在 Unix/Linux
系统中,运行的命令通常可以在系统的进程列表中看到,这意味着如果在命令行中直接输入密码,那么任何有权限查看进程列表的用户都可能看到密码。此外,命令行历史记录也可能会保存输入的密码
建议使用下面方案处理:
> redis-cli
127.0.0.1:6379> auth xxx
2