1、redis概述和安装 1.1、安装redis 1.2、启动redis 方式1:前台启动(不推荐) 方式2:后端启动(推荐) 1.3、关闭redls 1.4、进入redis命令图口 1.5、redis命令大全 1.6、redis介绍相关知识 2、redis 5大数据类型 2.1、redis键 (key) 2.2、redls字符邯(String) 2.2.1.简介 2.2.2、常用命令 set:添加键值对 get:获取值 apend:追价值 strlen:获取值的长度 setnx:key不存在时,设置key的值 incr:原子递增1 decr:原子递减1 incrby/decrby:递增或者递减指定的数字 mset:同时设置多个key-value mget:获取多个key对应的值 msetnx:当多个key部不存在时,则设置成功 getrange:获取值的范围,类似java中的substring setrange:覆盖指定位置的值 setex:设置键值&过期时间(秒) getset:以新换旧,设置新值同时返回旧值 2.2.3.数据结构 2.3、redis列表(List) 2.3.1、简介 2.3.2、常用命令 lpush/rpush:从左边或者右边插入一个或多个值 Irange:从列表左边获取指定范围内的值 lpop/rpop:从左边或者右边弹出多个元素 rpoplpush:从一个列表右边弹出一个元素放到另外一个列表中 lindex:获取指定索引位置的元素(从左到右) Ilen:获得列表长度 linsert:在某个值的前或者后面插入一个值 Irem:删除指定数量的某个元素 Iset:替换指定位置的值 2.3.4.数据结构 2.4、redis集合(Set) 2.4.1、简介 2.4.2、常用命令 sadd:添加一个或多个元素 smembers:取出元素 slsmember:判断集合中是否有某个值 scard:返回集合中元素的个数 srem:删除多个元素 spop:随机弹出多个值
srandmember:随机获取多个元素,不会从集合中盘除 smove:将某个原创从一个集合移动到另一个集合 sinter:取多个集合的交集 sinterstore:将多个集合的交集放到一个新的集合中 sunion:取多个集合的并集,自动去重 sunlonstore:将多个集合的并集放到一个新的集合中 sdiff:取多个集合的差集 sdiffstore:将多个集合的差集放到一个新的集合中 3.4.3、数据结构 2.5、redis哈希(Hash) 2.5.1、简介 2.5.2、常用命令 hset:设置多个field的值 hget:获取指定iled的值 hgetall:返回hash表的域和值 hmset:和hset类似(已弃用) hexists:判断始定的fleld是否存在,1:存在,0:不存在 hkeys:列出的filed hvals:列出的value hlen:返回fled的数量 hilncrby:filed的值加上指定的增量 hsetnx:当fled不存在的时候,设置fled的值 2.5.3、数据结构 2.6、redis有序集合zset(sorted set) 2.6.1、简介 2.6.2、常用命令 zadd:添加元素 zrange:score升序,获取指定素引范围的元素 zrevrange:score降序,获取指定素引范围的元素 zrangebyscore:按照score升序.
返回指定score范围内的数据 zrevrangebyscore:按照score降序,返回指定score范围内的数据 zilncrby:为指定元素的score加上指定的增量 zrem:删除集合中多个元素 zremrangebyrank:根据索引范围型除元素 zremrangebyscore:根据score的范国删除元素 zcount:统计指定score范田内元素的个数 zrank:按照score升序,返回某个元素在集合中的排名 zrevrank:按照score降序,返回某个元素在集合中的排名 zscore:返回集合中指定元素的score 2.6.3.数据结构 3、redis的发布和订阅 3.1、什么是发布和订阅 3.2、redis的发布和订阅 3.3、发布和订阅的命令行实现 3.4、发布和订阅常用命令 3.4.1、subscribe:订阅一个或者多个频道 3.4.2、publish:发布消息到指定的频道 3.4.2.psubscribe:订阅-个或多个符合恰定模式的频道 4、redis新的3种数据类型 4.1、Bitmaps:位操作字符串 4.1.1、简介 4.1.2、常用命令 setbit:设置某个偏移量的值(0或1) getbit:获取某个偏移位的值 bitcount:统计bit位都为1的数量 bittop:对一个多个bitmaps执行位操作 4.1.3.bltmaps与set比较 4.2. HyperLoglog
4.2.1、简介 4.2.2.命令 pfadd:添加多个元素 pfcount:获取多个HLL合并后元素的个数 pfmerge:将多个HLL合井后元素故入另外一个HLL 4.3. Geographkc 4.3.1、简介 43.2、命令 geoadd:添加多个位置的经纬度 geopos: 获取多个位置的坐标值 geodst:获取两个位置的直线距离 georadus:以给定的经纬度为中心,找出某一半径内的元素 5、Jedis操作Redis6 5.1、介绍 5.2、Jeds的用法 5.2.1、引入maven依赖 5.2.2、使用redis的ap操作redis 6、SpringBoot整合Redis 6.1、引l入redis的maven配置 6.2、applicatlon.propertles中配置redls信息 6.3、使用RedisTemplate工具类操作redls 6.4、RedisTemplate示例代码 7、redis事务操作 7.1、redis事务定义 7.2、Multi Exec、discard 7.2.1、相关的几个命令 multi:标记一个事务块的开始 exec:执行事务块内的命令 dlscard:取消事务 7.3、事务的错误处理 73.1、情况1:组队中命令有误.
导致命令取消执行 7.3.2、情况2:组队中没有问题,执行中部分成功部分失败 7.4、事务冲突的问题 7.4.1.例子 7.4.2.悲观锁 7.4.3、乐观锁 7.4.4. watch key [key.] 7.4.5、unwatch:取消监视 7.5、redis事务三特性 (1)单独的隔离操作 (2)设有隔离级别的概念 (3)不能保证原子性 8、redis持久化之RDB(Redis DataBase) 8.1、总体介绍 8.2. RDB (Redis DataBase) 8.2.1、RDB是什么?
8.2.2、备份是如何执行的 8.2.3. Fork 8.2.4、RDB持久化流程 8.2.5、指定备份文件的名称 8.2.6、指定备份文件存故的目录 8.2.7、触发RDB备份 方式1:自动备份,需配置备份规则 方式2:手动执行命令备份(save丨bgsave) 方式3:flushall命令 8.2.8.redis.conf其他一些配置 stop-writes-on-bgsave-error:当磁盘满时,是否关闭redis的写操作 rdbpresslon:rdb备份是否开启压缩
rdbchecksum:是否检查rdb备份文件的完整性 8.2.9、rdb的备份和恢复 8.2.10、优势 8.2.10、劣势 8.2.11、如何停止RDB?
9、redis持久化之AOF (Append Only File) 9.1、 AOF (Append Only File) 9.1.1、是什么 9.1.2、AOF持久化流程 9.1.3、AOF默认不开启 9.1.4、AOF和RDB同时开启,redls听谁的?
9.1.5、AOF启动/修复/恢复 9.1.6、AOF同步频率设置 appendfsync always:每次写入立即同步 appendfsync everysec:每秒同步 appendfsync no:不主动同步 9.1.7、rewrite压缩(AOF文件压缩) rewrite压缩是什么?
重写原理,如何实现重写?
触发机制,何时重写?
bgrewriteaof:手动触发重写 auto-aof-rewrite-percentage: 设置重写基准值 auto-aof-rewrite-min-size:设置重写基准值 举个例子 重写流程 no-appendfsync-on-rewrite:重写时,不会执行appendfsync操作 9.1.8.AOF优势 9.1.9、劣势 9.1.10、小总结 9.2、总结 9.2.1、用哪个好?
9.2.2、官网建议 10、redis主从复制 10.1、是什么?
10.2、能干嘛?
10.3、主从复制:怎么玩?
10.3.1、配置1主2从 10.3.2、配置主从 1)创建案例工作目录:master-slave 2)将redis.conf复制到master-slave目录 3)创建master的配置文件:redis-6379.conf 4)创建slave1的配置文件:redis-6380.conf 5) 创建slave2的配置文件:redls-6381.conf 6)启动master 7)启动slave1 8)启动slave2 9)查看主机的信息 10)查看slave1的信息 11)同样查看slave2的信息 12)验证主从同步效果 10.3.3、主从复制原理 10.3.4、小结 主redis挂掉以后情况会如何?
从机是上位还是原培待命?
从挂掉后又恢复了,会继续从主同步数据么?
InfoRepllcation:查看主从复制信息 10.2、常用的主从结构 10.2.1、一主二从 1)创建案例工作目录:master-slave
2) 将redis.conf复制到master-slave目录 3)创建master的配置文件:redis-6379.conf 4)创建slave1的配置文件:reds-6380.conf 5) 创建slave2的配置文件:redis-6381.conf 6)启动master 7)启动slave1 8)启动slave2 9)分别登陆3台机器,查看各自主从信息 10)配置slave1为master的从库 11)配置slave2为master的从库 12)再来看看master的主从信息 10.2.2、薪火相传 10.2.3、反客为主 10.3、哨兵(Sentinel))模式 10.3.1、什么是悄兵模式?
10.3.2、原理 10.3.3、怎么玩?
1)需求:配置1主2从3个哨兵 2)创建案例工作目录:sentinel 3) 将redis.conf复制到sentinel目录 4)创建master的配置文件:redis-6379.conf 5)创建slave1的配置文件:reds-6380.conf 6)创建slave2的配置文件:redis-6381.conf 7) 启动master、slave1、slave2 8)配置slave1为master的从库 11)配置slave2为master的从库 12)验证主从复制是否正常 13)创建sentinel1的配置文件:sentinel-26379.conf 14)创建sentinel2的配置文件:sentinel-26380.conf 15)创建sentinel3的配置文件:sentinel-26381.conf 16)启动3个sentinel 17)分别查看3个sentinel的信息 18)验证故障自动转移是否成功 19)恢复l旧的master自动倍首称臣 10.3.4、更多Sentinel介绍 10.3.5、SpringBoot整合Sentinel模式 1)引l入redis的maven配置 2) applicatlon.properties中配置redis sentinel信息 3)使用RedisTemplate工具类操作redis 2) RedisTemplate示例代码 11、redis集群(Cluster) 11.1、存在的问题 11.2、什么是集群 11.3、集群如何配置?
1)需求:配置3主3从集群 2)创建案例工作目录:cluster 3)将redis.conf复制到cluster目录 4) 创建master1的配置文件:redis-6379.conf 5)创建master2的配置文件:redis-6380.conf 6)创建master3的配置文件:redis-6381.conf 4)创建slave1的配置文件:redls-6389.conf 5)创建slave2的配置文件:redls-6390.conf 6)创建slave3的配置文件:redls-6391.conf 7)启动master、slave1. slave2 8)查看6个redis的启动情况 9)确保node-xxx.conf文件已正常生成 10)将6个节点合成一个集群 11)连接集群节点,查看集群信息:clusternodes