部署redis

1、下载redis:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz

2、下载完毕redis之后,解压,编译一下

$>tar -zxvf redis-5.0.5.tar.gz
$>cd redis-5.0.5
$>make

3、编译完之后会进入src文件中,再次make install一下

$>cd src
$>make install

4、修改一下redis的config文件

$>cd redis-5.0.5
$>vim redis.conf
//将daemonize属性改为yes,后台启动redis服务

5、 创建2个文件,方便管理一些文件

$>cd redis-5.0.5
$>mkdir etc
$>mkdir bin
$>mv redis.conf ../etc
$>cd src
$>mv mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server ../bin

6、将bin与etc加入到profile中

$>vim /etc/profile
$>在末尾添加
$>export PATH="$PATH:/root/###/redis-5.0.5/bin"
$>export PATH="$PATH:/root/###/redis-5.0.5/etc"
$>sh /etc/profile

7、启动redis

redis-server /root/***/redis-5.0.5/etc/redis.conf

8、配置内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上/etc/sysctl.conf加上

$>vim /etc/sysctl.conf
//将vm.overcommit_memory = 1加入
$>sysctl -p
//查看一下

9、redis-cli,可以进入命令行

连接redis

redis-cli -h 域名 -p 端口 -a 密码

查看keys

keys *
keys mykey*
lrange key 0 -1

清除redis

del mykey

//set
//hash
//string

常用命令
1、–清空当前选择的数据库,以便于对后面示例的理解。

redis 127.0.0.1:6379> flushdb 
OK 

list列表

lpush list 1
lpush list 2
lrange list 0 10

2、–添加String类型的模拟数据。

redis 127.0.0.1:6379> set mykey 2 
OK 
redis 127.0.0.1:6379> set mykey2 “hello” 
OK 

3、–添加Set类型的模拟数据。

redis 127.0.0.1:6379> sadd mysetkey 1 2 3 
(integer) 3 

4、–添加Hash类型的模拟数据。

redis 127.0.0.1:6379> hset mmtest username “stephen” 
(integer) 1

5、–根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。

redis 127.0.0.1:6379> keys my* 
1) “mysetkey” 
2) “mykey” 
3) “mykey2”

6、–删除了两个Keys。

redis 127.0.0.1:6379> del mykey mykey2 
(integer) 2 

7、–查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。

redis 127.0.0.1:6379> exists mykey 
(integer) 0 

8、–查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。

redis 127.0.0.1:6379[1]> exists mysetkey 
(integer) 1

9、–在重新打开ID为0的缺省数据库。

redis 127.0.0.1:6379[1]> select 0 
OK 

10、–查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。

redis 127.0.0.1:6379> exists mysetkey 
(integer) 0 

11、–准备新的测试数据。

redis 127.0.0.1:6379> set mykey “hello” 
OK 

–将mykey改名为mykey1

redis 127.0.0.1:6379> rename mykey mykey1 
OK 

12、–由于mykey已经被重新命名,再次获取将返回nil。

redis 127.0.0.1:6379> get mykey 
(nil)

13、–通过新的键名获取。

redis 127.0.0.1:6379> get mykey1 
“hello”

14、–由于mykey已经不存在了,所以返回错误信息。

redis 127.0.0.1:6379> rename mykey mykey1 
(error) ERR no such key 

15、–为renamenx准备测试key

redis 127.0.0.1:6379> set oldkey “hello” 
OK 
redis 127.0.0.1:6379> set newkey “world” 
OK 

16、–由于newkey已经存在,因此该命令未能成功执行。

redis 127.0.0.1:6379> renamenx oldkey newkey 
(integer) 0 

17、 –查看newkey的值,发现它也没有被renamenx覆盖。

redis 127.0.0.1:6379> get newkey 
“world”

18、PERSIST/EXPIRE/EXPIREAT/TTL:
–为后面的示例准备的测试数据。

redis 127.0.0.1:6379> set mykey “hello” 
OK 

19、–将该键的超时设置为100秒。

redis 127.0.0.1:6379> expire mykey 100 
(integer) 1 

20、–通过ttl命令查看一下还剩下多少秒。

redis 127.0.0.1:6379> ttl mykey 
(integer) 97 

21、–立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。

redis 127.0.0.1:6379> persist mykey 
(integer) 1 

22、–ttl的返回值告诉我们,该键已经没有超时了。

redis 127.0.0.1:6379> ttl mykey 
(integer) -1 

23、–重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。

redis 127.0.0.1:6379> expire mykey 20 
(integer) 1 

24、–再用ttl确认一下,从结果中可以看出果然被更新了。

redis 127.0.0.1:6379> ttl mykey 
(integer) 17 

–立刻更新该键的值,以使其超时无效。

redis 127.0.0.1:6379> set mykey “world” 
OK 

–从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。

redis 127.0.0.1:6379> ttl mykey 
(integer) -1

25、TYPE/RANDOMKEY/SORT:
–由于mm键在数据库中不存在,因此该命令返回none。

redis 127.0.0.1:6379> type mm 
none 

26、–mykey的值是字符串类型,因此返回string。

redis 127.0.0.1:6379> type mykey 
string

27、–准备一个值是set类型的键。

redis 127.0.0.1:6379> sadd mysetkey 1 2 
(integer) 2 

–mysetkey的键是set,因此返回字符串set。

redis 127.0.0.1:6379> type mysetkey 
set 

28、–返回数据库中的任意键。

redis 127.0.0.1:6379> randomkey 
“oldkey”

29、–清空当前打开的数据库。

redis 127.0.0.1:6379> flushdb 
OK 

–由于没有数据了,因此返回nil。

redis 127.0.0.1:6379> randomkey 
(nil)
<think>我们正在使用Podman部署Redis。根据引用[3]中关于Docker部署Redis的命令,我们可以类似地使用Podman来部署。Podman的命令与Docker命令高度兼容,因此我们可以将Docker命令转换为Podman命令。 引用[3]中的Docker命令如下: ```bash docker run \ --name redis \ -p 6379:6379 \ --restart unless-stopped \ -v /home/redis/data:/data \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf \ -d registry.openanolis.cn/openanolis/redis:5.0.3-8.6 \ redis-server /etc/redis/redis.conf ``` 我们可以将其转换为Podman命令: ```bash podman run \ --name redis \ -p 6379:6379 \ --restart unless-stopped \ -v /home/redis/data:/data \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf \ -d registry.openanolis.cn/openanolis/redis:5.0.3-8.6 \ redis-server /etc/redis/redis.conf ``` 但是,请注意以下几点: 1. Podman默认使用非root用户运行容器,因此可能需要调整卷挂载的目录权限,或者使用`--privileged`选项(不推荐)或使用`--userns`选项来管理用户命名空间。 2. 如果使用非root用户运行Podman,可能需要使用`sudo`或者配置用户命名空间映射来访问某些目录。 3. `--restart`选项在Podman中可能不支持,除非使用systemd服务来管理容器。Podman推荐使用systemd服务来实现容器自启动。 因此,我们可以分步骤进行: ### 步骤1:准备Redis配置文件和持久化目录 首先,在主机上创建配置文件和持久化目录: ```bash mkdir -p /home/redis/conf mkdir -p /home/redis/data ``` 然后,下载或创建Redis配置文件。可以从Redis官方网站获取默认配置文件,然后根据需要进行修改。例如: ```bash # 下载默认配置文件 curl -o /home/redis/conf/redis.conf http://download.redis.io/redis-stable/redis.conf ``` 编辑配置文件,确保以下设置(至少): - `daemonize no`(因为我们需要在容器内前台运行) - `bind 0.0.0.0`(允许远程连接,如果需要的话) - `protected-mode no`(如果不需要保护模式,或者设置密码) - 如果需要持久化,确保`appendonly yes`(或者根据需求配置RDB) ### 步骤2:使用Podman运行Redis容器 运行以下命令: ```bash podman run -d \ --name redis \ -p 6379:6379 \ -v /home/redis/data:/data:Z \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf:Z \ --restart unless-stopped \ docker.io/redis:5.0.3 \ redis-server /etc/redis/redis.conf ``` 注意: - 我们使用了`docker.io/redis:5.0.3`作为镜像,因为原命令中的镜像可能不是官方镜像,这里我们使用官方Redis镜像。 - 在卷挂载时使用了`:Z`选项,这是为了在SELinux环境下重新标记卷,以便容器可以访问。如果主机没有启用SELinux,可以不加。如果遇到权限问题,可以尝试使用`:z`(共享)或`:Z`(私有)选项。 - 如果使用`--restart unless-stopped`,在Podman中,这个选项在容器退出时不会自动重启(除非使用systemd服务)。为了实现自动重启,我们可以使用`--restart=always`,但同样,Podman的`--restart`选项仅在容器由systemd服务管理时有效。因此,更可靠的方式是生成systemd服务文件。 ### 步骤3(可选):设置systemd服务以实现自启动 如果需要在主机启动时自动启动Redis容器,我们可以为容器生成systemd服务文件。 首先,创建容器(如果还没有创建): ```bash podman create --name redis -p 6379:6379 \ -v /home/redis/data:/data:Z \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf:Z \ docker.io/redis:5.0.3 \ redis-server /etc/redis/redis.conf ``` 然后,生成systemd服务文件: ```bash mkdir -p ~/.config/systemd/user cd ~/.config/systemd/user podman generate systemd --name redis --files --new ``` 然后启用并启动服务: ```bash systemctl --user enable container-redis.service systemctl --user start container-redis.service ``` 如果希望系统启动时自动启动,还需要启用用户服务的自启动: ```bash sudo loginctl enable-linger $(whoami) ``` ### 验证 运行`podman ps`查看容器是否运行。也可以通过`podman logs redis`查看日志。 ### 持久化配置 在Redis配置文件中,我们启用了AOF持久化(通过`appendonly yes`),数据将保存在`/data`目录下(在容器内,对应主机的`/home/redis/data`)。这样即使容器停止,数据也不会丢失。 ### 安全考虑 - 如果Redis需要暴露在外部网络,请设置密码(在配置文件中设置`requirepass yourpassword`)。 - 考虑使用网络策略限制访问。 ### 总结 以上是使用Podman部署Redis的步骤。与Docker类似,但需要注意Podman在自启动和权限管理上的一些差异。 §§相关问题§§ 1. 如何配置Redis的持久化策略? 2. 如何使用Podman管理容器的自启动? 3. 如何保护Redis实例的安全? 4. 如何监控运行在Podman中的Redis?</think>### 使用 Podman 部署 Redis 的步骤 #### 1. **准备工作** - 确保已安装 Podman: ```bash sudo apt update && sudo apt install podman # Ubuntu/Debian ``` - 创建持久化目录和配置文件: ```bash mkdir -p ~/redis/{data,conf} touch ~/redis/conf/redis.conf ``` #### 2. **配置 Redis 持久化** 编辑配置文件 `~/redis/conf/redis.conf`: ```ini daemonize no bind 0.0.0.0 appendonly yes # 启用 AOF 持久化[^1] dir /data # 持久化文件存储路径 ``` #### 3. **运行 Redis 容器** ```bash podman run -d \ --name redis \ -p 6379:6379 \ -v ~/redis/data:/data:Z \ -v ~/redis/conf/redis.conf:/etc/redis/redis.conf:Z \ docker.io/library/redis:latest \ redis-server /etc/redis/redis.conf ``` **参数说明**: - `-p 6379:6379`:映射容器端口到主机 - `-v ~/redis/data:/data`:挂载数据目录(`:Z` 为 SELinux 标签) - `-v ~/redis/conf/redis.conf:/etc/redis/redis.conf`:挂载配置文件 - `redis-server /etc/redis/redis.conf`:指定配置文件启动 #### 4. **验证部署** - 检查容器状态: ```bash podman ps ``` - 连接 Redis 测试: ```bash podman exec -it redis redis-cli 127.0.0.1:6379> SET test "success" OK 127.0.0.1:6379> GET test "success" ``` #### 5. **持久化验证** - 重启容器后数据应保留: ```bash podman restart redis podman exec redis redis-cli GET test # 应返回 "success" ``` #### 6. **管理容器** - **自启动**(需 root 权限): ```bash podman generate systemd --new --name redis > ~/redis-container.service sudo cp ~/redis-container.service /etc/systemd/system/ sudo systemctl enable redis-container ``` - **查看日志**: ```bash podman logs redis ``` --- ### 关键配置说明 1. **持久化机制**: - `appendonly yes` 启用 AOF 持久化,确保宕机时最多丢失 1 秒数据[^1] - 数据存储在主机目录 `~/redis/data` 中 2. **安全建议**: - 在 `redis.conf` 中添加 `requirepass yourpassword` 设置密码 - 限制绑定 IP(如 `bind 127.0.0.1`) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值