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