redis 高级用法 持久化方案 主从复制原理与优化

一、redis高级用法

# 慢查询相关
# pipeline与事务
    -pipeline每次只能作用在一个Redis的节点上(如果做了集群,就没有pipline了)
    
   -悲观锁和乐观锁
   -redis只能实现乐观锁:https://www.cnblogs.com/liuqingzheng/p/9997092.html
        # 2 模拟乐观锁
        # 在开启事务之前,先watch
        wathc age
        multi
        decr age
        exec

        # 另一台机器
        mutil
        decr age
        exec  # 先执行,上面的执行就会失败(乐观锁,被wathc的事务不会执行成功)
        
        
        
# 发布订阅
#Bitmap位图
# HyperLogLog:极小的空间完成独立数量统计
    -pfadd key element  增加(重复了不会增加)
    -pfcount key         统计个数
    -去重,独立用户统计,有错误率
    
# GEO(redis,es)
    # 插入
    geoadd cities:locations 116.28 39.55 beijing #把北京地理信息天津到cities:locations中
    geoadd cities:locations 117.12 39.08 tianjin
    geoadd cities:locations 114.29 38.02 shijiazhuang
    geoadd cities:locations 118.01 39.38 tangshan
    geoadd cities:locations 115.29 38.51 baoding
    # 计算北京到天津的距离
    geodist cities:locations beijing tianjin km
    # 计算北京方圆150km内的城市
    georadiusbymember cities:locations beijing 150 km

二、持久化

1.rdb方案(快照式)

# 两种:
    -rdb:缓存
    -aof:对数据准确性要求高一些
# rdb:触发方式三种
    -手动 save
        
    -手动 bgsave
    
    -配置文件
    配置   seconds   changes
    save   900        1     #900秒 一次修改触发
    save   300        10  #300秒 10次修改触发
    save   60         10000  #60秒一万次修改触发
    
    
# 最佳配置
save 900 1 
save 300 10 
save 60 10000 
dbfilename dump-3306.rdb  #以端口号作为文件名,可能一台机器上很多reids,不会乱
dir /bigdiskpath #保存路径放到一个大硬盘位置目录
stop-writes-on-bgsave-error yes #出现错误停止
rdbcompression yes #压缩
rdbchecksum yes #校验

2.2 aof(日志式)

客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复

# AOF 重写
    本质就是把过期的,无用的,重复的,可以优化的命令,来优化
    这样可以减少磁盘占用量,加速恢复速度
    
    
# aof的最佳配置
appendonly yes #将该选项设置为yes,打开
appendfilename "appendonly-3306.aof" #文件保存的名字
appendfsync everysec #采用第二种策略
dir /data #存放的路径
no-appendfsync-on-rewrite yes

 三、主从复制原理与优化

# 手动配置
在6380上执行(去从库配置,配置主库)
# 127.0.0.1 6379主库
# 127.0.0.1 6380 从库
# 在从库上执行,就建立了主从
slaveof 127.0.0.1 6379 #异步
# 取消主从
slaveof no one #取消复制,不会把之前的数据清除


# 配置文件配置
daemonize no
pidfile redis.pid
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
logfile redis.log
dbfilename dump.rdb
dir /data
# 指定主库为10.0.0.101 6379
slaveof 10.0.0.101 6379
# 从库只读
slave-read-only yes
原文地址:https://www.cnblogs.com/ltyc/p/14454176.html