> For AI agents: the complete documentation index is available at https://www.tteam.icu/llms.txt, the full documentation bundle is available at https://www.tteam.icu/llms-full.txt.

# redis

## 启动


**setup-6379.sh**

```sh file="./redis/setup-6379.sh"
#!/bin/bash

version=5.0.2
port=6379
password='password'

echo 'Asia/Shanghai' > /etc/timezone

docker stop redis-${port}
docker rm redis-${port}
docker run --name redis-${port} -d \
--restart=always \
--net host \
-v /etc/sysctl.conf:/etc/sysctl.conf \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-v $(pwd)/data-${port}:/data \
redis:${version} redis-server \
--bind 0.0.0.0 \
--port ${port} \
--requirepass "${password}" \
--protected-mode no \
--maxmemory 512M \
--maxmemory-policy noeviction \
--maxclients 100000 \
--appendonly yes \
--appendfsync everysec \
--auto-aof-rewrite-percentage 100 \
--auto-aof-rewrite-min-size 1024M

# aof是2倍触发
# --auto-aof-rewrite-percentage 100
# aof文件超过20000mb
# --auto-aof-rewrite-min-size 20000mb
# --maxmemory-policy volatile-lru
# 1、volatile-lru: 只对设置了过期时间的key进行LRU(默认值)
# 2、allkeys-lru :  删除lru算法的key
# 3、volatile-random: 随机删除即将过期key
# 4、allkeys-random: 随机删除
# 5、volatile-ttl :  删除即将过期的
# 6、noeviction :  永不过期，返回错误

```


**redis-cluster.sh**

```sh file="./redis/redis-cluster.sh"
#!/bin/bash

version=7.4.0
password=""

echo 'Asia/Shanghai' > /etc/timezone

# 大内存时使用
# if ! grep -q "vm.overcommit_memory = 1" /etc/sysctl.conf;then echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && sysctl -p;fi

nodes="
7000
7001
7002
7003
7004
7005
"

for node in ${nodes};do

port=${node}
docker stop redis-${port}
docker rm redis-${port}
docker run --name redis-${port} -d \
--restart=always \
--net host \
-v /etc/sysctl.conf:/etc/sysctl.conf \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-v $(pwd)/data-${port}:/data \
redis:${version} redis-server \
--port ${port} \
--bind 0.0.0.0 \
--requirepass "${password}" \
--masterauth "${password}" \
--protected-mode no \
--maxmemory 64M \
--maxmemory-policy noeviction \
--maxclients 100000 \
--cluster-enabled yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000 \
--appendonly yes \
--appendfsync everysec \
--auto-aof-rewrite-percentage 100 \
--auto-aof-rewrite-min-size 128M

# aof是2倍触发
# --auto-aof-rewrite-percentage 100
# aof文件超过20000mb
# --auto-aof-rewrite-min-size 20000mb

done

# 官方文档
# https://redis.io/docs/reference/eviction/
# 创建集群命令
# docker exec -it redis-7000 redis-cli --cluster create  --cluster-replicas 1 192.168.1.1:7000 192.168.1.1:7001 192.168.1.1:7002 192.168.1.1:7003 192.168.1.1:7004 192.168.1.1:7005
# 查看集群状态
# docker run -it --rm --net host redis:7.4.0 redis-cli -p 7000 --cluster check 192.168.1.1:7000
# 查看帮助
# docker run -it --rm --net host redis:7.4.0 redis-cli -p 7000 --cluster help
# 查询 key,keys/scan 命令只能显示当前节点的数据
# docker run -it --rm --net host redis:7.4.0 redis-cli -p 7000 --cluster get key1
```


:::tip
`--cluster-replicas` 用于定义副本数。
:::

## 图形化连接工具

win: [RESP]()

mac: [RESP](https://redis.io/insight/)

## 迁移

[redis-shake](https://www.tteam.icu/ops/middleware/redis-shake.md)
