随笔分类 - Redis
摘要:Redis缓存穿透、击穿、雪崩 这三个知识点是面试必问,也是工作中使用Redis常见的问题。 缓存穿透 什么是缓存穿透 缓存穿透是指某个查询在缓存中不存在(无法命中),在数据库中也不存在,每次查询都会进入到数据库中,大量这样的请求或攻击将会给持久层服务器造成很大压力,造成服务器宕机。 解决方案 使用
阅读全文
摘要:Redis哨兵模式浅析 背景 两种主从复制的模式,一种是一主多从,另一种是主-从(主)-从的链路模式。对于任意模式,主节点宕机后都需要再次选一个主机,这个动作不会自动完成,需要手动配置。 slaveof no one # 不以服从于任何节点,即自己是主节点 手动配置繁琐易出错且花费时间长,使得Red
阅读全文
摘要:Redis主从复制 背景 真实项目中不可能仅使用单机的Redis,一旦断电,则数据全部丢失;所以都会采用主从复制的模式,常见的有一主二从或一主三从。 主从复制是指将一台Redis服务器(主节点master)中的数据复制到多台Redis服务器(从节点slave)中;数据的复制是单向的,只能从主节点复制
阅读全文
摘要:Redis订阅发布 什么是订阅发布及其使用场景? Redis订阅发布是一种消息通信模式;发布者(publish)发布消息,订阅者(subscribe)接收消息;Redis客户端可以订阅任意数量的频道 图解原理 订阅频道的三个客户端及其订阅的频道间的关系 消息发送时:数据在通道及订阅通道客户端间的传输
阅读全文
摘要:Redis持久化——AOF 什么是AOF? AOF(Append Only File)日志文件追加:将对Redis的所有写和删除操作追加到日志文件中,不记录读的操作,在数据恢复时将日志文件中所有的操作执行一遍。 持久化流程 以日志的形式来记录每个写操作,将Redis执行过的所有写指令和删除指令记录下
阅读全文
摘要:Redis持久化——RDB 背景 为什么需要持久化? Redis是内存数据库,内存中的数据会断电即失,因此需要做持久化避免里面的数据在突然断电的情况丢失。 持久化方式都有哪些? RDB(Redis DataBase) :将某一时刻的内存快照(snapshot),以二进制方式写入磁盘中.rdb文件的过
阅读全文
摘要:redis配置文件详解 配置文件路径:D:\install\Redis-x64-5.0.10\redis.windows.conf 内存单位 注意点: k和kb不同 大小写不敏感 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes
阅读全文
摘要:RedisTemplate 实际项目中对redis的操作,一个是创建RedisConfig,一个是创建RedisUtil RedisConfig中重写RedisTemplate,设置key的序列化方式,value的序列化方式等 RedisConfig模板 package com.example.re
阅读全文
摘要:SpringBoot整合Redis 在SpringBoot2.x开始,原来使用的Jedis被替换为了lettuce jedis:底层采用的是直连,多个线程操作是不安全的,如果想要避免不安全,使用jedis连接池!类似BIO模式 lettuce:采用netty,实例可以在多个线程中共享,不存在线程不安
阅读全文
摘要:Redis实现乐观锁 面试常问 watch 监控 一次命令对事务仅生效一次 ,执行的时候会比较监视时候的值和执行的值是否相等,不相等则报错 # 正常执行一次 127.0.0.1:6379[3]> flushdb OK 127.0.0.1:6379[3]> set money 100 OK 127.0
阅读全文
摘要:redis基本的事务操作 redis事务的本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行的过程中会按顺序依次执行 一次性、顺序性、排他性 redis事务没有隔离级别的概念!所有的命令在事务在并没有被执行,只有发起执行命令的时候才会执行 redis的单条命令行是保证原子性的,但是事
阅读全文
摘要:Bitmap类型详解 使用场景:用bitmap来记录周一到周日的打卡 添加和获取 # setbit 设置值 # getbit 获取值 127.0.0.1:6379[3]> setbit sign 0 0 (integer) 0 127.0.0.1:6379[3]> setbit sign 1 1 (
阅读全文
摘要:hyperloglog类型详解 基数:不重复的元素数量就是基数 Redis Hyperloglog就是使用基数统计的算法! **优点:**占用的内存是固定的, 2^64不同元素的技术,只需要占用12k的内存!如果要从内存角度来比较,Hyperlog是首选 **缺点:**0.81%的错误率。适用于可接
阅读全文
摘要:geospatial类型详解 添加地理位置 # geoadd # 规则:南极北极无法添加,一般会直接下载城市数据,通过java程序一次性导入进去 # 一般都是 127.0.0.1:6379[3]> geoadd China:city 116.397128 39.916527 Beijing (int
阅读全文
摘要:zset类型详解 zset 有序数组 zset中每个数据都对应一个score值,用来排序 添加和获取数据 127.0.0.1:6379[3]> flushdb OK 127.0.0.1:6379[3]> zadd myzset 1 one # 在第一个位置添加one (integer) 1 127.
阅读全文
摘要:hash类型详细讲解 set和get还有del # hset 添加key-value # hmset 批量添加key-value # hget 获取单个字段 # hmget 获取多个字段 # hgetall 获取hash全部值 127.0.0.1:6379[3]> flushdb OK 127.0.
阅读全文
摘要:List类型讲解 压入数据和查看 注:所有list的操作命令都以l开头,redis命令不区分大小写 # lpush 从左边压入 # rpush 从右边压入 # lrange key start end 获取数组从s到e下标中的数据 127.0.0.1:6379[3]> lpush list one
阅读全文
摘要:Redis的基本命令 # 启动Redis数据库 在redis安装目录下执行 redis-server -h host -p port # 连接本地数据库 redis-cli # 设置 key set name ohmydream # 查看 key 类型 type name # 查看key是否存在 e
阅读全文
摘要:Redis概述 Redis是什么? Redis(Remote Dictionary Server)远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可以持久化的日志型、Key-value数据库,并提供30+种API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追
阅读全文
摘要:Redis基础知识 redis默认有16个库 # 连接数据库 连接本地redis redis-cli # 连接远程redis redis-cli -h host -p port -a password # 验证连接 如成功应该返回pong ping # 切换至3号数据库[0-15] select 3
阅读全文

浙公网安备 33010602011771号