redis安装配置文档

docker方式部署redis

查看tag
https://docker.rrbcloud.com/_/redis
docker pull redis:7
mkdir -p /mydata/redis/data  
mkdir -p /mydata/redis/conf/
echo 'notify-keyspace-events Ex' >/mydata/redis/conf/redis.conf
docker run -p 6379:6379 --restart=always -d --name myredis \
 -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data \
 redis:7 redis-server /etc/redis/redis.conf --appendonly yes --requirepass Abc123456
docker exec -it myredis redis-cli -a Abc123456 info

高可用-哨兵模式

https://github.com/bitnami/charts/tree/main/bitnami/redis/#installing-the-chart

install
=====================
kubectl create ns cas
helm repo add my-repo https://charts.bitnami.com/bitnami
helm install cas-server-redis bitnami/redis --set usePassword=false --set sentinel.enabled=true \
 --set sentinel.usePassword=false --set persistence.storageClass=managed-nfs-storage -n cas
helm list
helm status cas-server-redis
=====================

To get your password run:
    export REDIS_PASSWORD=$(kubectl get secret --namespace cas cas-server-redis -o jsonpath="{.data.redis-password}" | base64 -d)
To connect to your Redis server:

1. Run a Redis pod that you can use as a client:
   kubectl run --namespace cas redis-client --restart='Never'  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image docker.io/bitnami/redis:7.0.9-debian-11-r1 --command -- sleep infinity
   kubectl exec --tty -i redis-client \
   --namespace cas -- bash

2. Connect using the Redis CLI:
   REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h cas-server-redis -p 6379 # Read only operations
   REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h cas-server-redis -p 26379 # Sentinel access
    #获取master节点,写入测试数据
    SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
    exit
   REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h cas-server-redis-node-0.cas-server-redis-headless.cas.svc.cluster.local
   set gao jinbo
   get gao
   exit
   REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h cas-server-redis -p 6379
   info
   get gao

To connect to your database from outside the cluster execute the following commands:
    kubectl port-forward --namespace cas svc/cas-server-redis 6379:6379 &
    REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379

配置优化

多线程

io-threads-do-reads yesio-threads 线程数官方建议:4 核的机器建议设置为 2 或 3 个线程,8 核的建议设置为 6 个线程,线程数一定要小于机器核数,尽量不超过8个。

内存优化

maxmemory 14g maxmemory-policy allkeys-lru

maxclients 50000

实时保存

如何配置持久化存储// 将no改为yes,控制aof开启与否appendonly no// 控制aof文件名称,存储的目录便是dir配置项appendfilename “appendonly.aof”// 三种备份策略(三者只需要开启以一个即可)

//appendfsync always // 命令写入立即写入磁盘

appendfsync everysec // 每秒实现文件的同步,写入磁盘

//appendfsync no // 随机进行文件的同步,同步操作则交给操作系统来负责,通常时间是最长30s

选择AOF还是RDB进行数据的持久化

1.针对不同的情况来选择,建议使用两种方式相结合.2.针对数据安全性、完整性要求高的采用aof方式.3.针对不太重要的数据可以使用rdb方式.4.对于数据进行全量备份,便于数据备份的可以采用rdb方式

备份与恢复

导出

redis-dump -u 127.0.0.1:6371 > db_full.json redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json

恢复

< db_full.json redis-load < db_db15.json redis-load -d 15

//OR

cat db_full | redis-load cat db_db15.json | redis-load -d 15

慢日志

redis-cli keys "*" | xargs redis-cli del
//如果要指定 Redis 数据库访问密码,使用下面的命令
redis-cli -a password keys "*" | xargs redis-cli -a password del

//如果要访问 Redis 中特定的数据库,使用下面的命令
redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del

//删除当前数据库中的所有Key  
flushdb

//删除所有数据库中的key  
flushall

查看TOP10的大KEY

apt install python3-pip -y
pip install rdbtools python-lzf
redis-cli save
rdb -c memory -l 10 /var/lib/redis/6379/dump.rdb