一、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