Redis
文章平均质量分 74
西瓜游侠
希望自己能够开心
展开
-
Redis常用命令整理
连接 Redis# 连接本地Redisredis-cli# 连接远程Redisredis-cli -h host -p port -a password系统相关# 输入密码进行授权AUTH password# 打印字符串ECHO message# ping服务,查看服务是否允许PING# 关闭当前连接QUIT# 切换数据库DB0~DB15SELECT indexkey 相关的命令# 删除keyDEL key# 序列化给定key的值,并返回被序列化的值D原创 2021-05-30 16:38:36 · 122 阅读 · 0 评论 -
Redis过期键的过期策略和内存淘汰机制
1 Redis 过期策略Redis 过期策略是:定期删除 + 惰性删除。定期删除:指的是 Redis 默认是每隔 100ms 就随机抽取⼀些(具体多少个可以设置)设置了过期时间的 key,检查其是否过期,如果过期就删除。注意:肯定不是全部遍历,这样会导致 Redis 卡死。但是问题是,定期删除可能会导致很多过期 key 到了时间并没有被删除掉,那怎么办呢?惰性删除:是指客户端在获取某个 key 的时候,Redis 会检查⼀下 这个 key 是否设置了过期时间并且判断是否已经过期。如果过期原创 2021-05-21 16:57:57 · 147 阅读 · 0 评论 -
Redis单线程模型
参考:《「面试突击」-Redis 篇》-Redis 的线程模型了解吗?为啥单线程效率还这么高? (juejin.cn)石杉的架构笔记Redis 内部使用 文件事件处理器(file event handler)来处理客户端请求。这个文件事件处理器是单线程的,因此 Redis 才叫做 单线程模型。文件事件处理器 采用 I/O多路复用机制,同时监听多个 socket,将产生事件的 socket 压入 内存队列 中,I/O多路复用程序 每次从 内存队列 取出一个 socket 交给 事件分派器, .转载 2021-05-21 15:35:09 · 120 阅读 · 0 评论 -
RDB和AOF持久化
参考:Redis AOF 持久化详解 (juejin.cn)Redis 提供了 RDB 和 AOF 两种数据持久化方案:RDB —— 快照AOF —— 增量日志1 RDB 持久化将当前 Redis 进程的内存数据生成时间点快照(point-in-time snapshot),序列化成二进制,写入磁盘文件,默认文件名为 dump.rdb。1.1 RDB 使用RDB 持久化功能可以通过指令触发和基于 redis.conf 配置文件自动触发两种:指令触发save 指令该指令会.转载 2021-05-20 16:30:15 · 190 阅读 · 0 评论 -
scan指令匹配海量key
1 scan 基本指令和用法Redis 提供了一个命令 keys,用以按正则匹配对应的 key:keys pattern但是,当 key 很多的时候,会导致 Redis 服务卡顿,并且不支持 limit、offset。因此,Redis 提供了命令 scan 来解决大数据量的 key 的查询问题。scan cursor [MATCH pattern] [COUNT count]其中:cursor:游标,第一次遍历时,cursor 值传 0,然后将返回结果中第一个整数值作为下一次遍历的 cur原创 2021-05-18 17:17:28 · 651 阅读 · 0 评论 -
Redis对Geo的支持
当需要在地图上计算 “附近的人” 的时候,业界通常使用 GeoHash 算法。GeoHash算法将二维的经纬度数据映射到一维的整数,这样地图上的点都将被映射到一条直线上,在地图上靠近的点映射到直线上的点之间的距离也会很接近,这样只需要在直线上获取附近的点就行了。Redis对GeoHash的支持在Redis中,提供了Geo指令用以支持这种功能。实际上,在Redis中,经纬度使用 52 位的整数进行编码,放进了 zset 里面,zset 的 value 是元素的 key,score 是 GeoHas原创 2021-05-18 16:25:56 · 343 阅读 · 0 评论 -
Redis限流
转载:限流一般是指在一个时间窗口内对某些操作请求的数量进行限制。比如一个论坛限制用户每秒钟只能发一个帖子,每秒钟只能回复5个帖子。限流可以保证系统的稳定,限制恶意请求,防止因为流量暴增导致系统瘫痪宕机。常用的限流算法有:滑动窗口、漏斗、令牌桶。得益于Redis的数据结构特点,Redis实现滑动窗口限流和漏斗限流的非常的便捷。1 滑动窗口限流滑动窗口限流 就是记录一个滑动的时间窗口内的操作次数,操作次数超过阈值则进行限流。在Redis中,可以用zset(有序集合)数据结构来实现滑动窗口限流:.原创 2021-05-17 11:23:34 · 2008 阅读 · 0 评论 -
Redis的布隆过滤器
布隆过滤器可以理解为一个set,可以用来判断元素是否存在。会有一定的误判,但是通过调整布隆过滤器的参数,误判率可以控制在很小的范围。Redis安装布隆过滤器Redis中是通过插件的形式支持布隆过滤器的。为了省去繁琐的安装,可以借助redislabs/rebloom镜像来学习。[root@localhost ~]# docker pull redislabs/rebloom[root@localhost ~]# docker run -p 6379:6379 -d --name=my-redis-b原创 2021-05-16 10:05:44 · 353 阅读 · 0 评论 -
Redis的HyperLogLog
1 基本概念HyperLogLog 是Redis中的高级数据结构,特点如下:用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量);速度快;占空间小(12KB);基于概率统计,存在误差,标准误差为0.81%;只做统计,不保存输入元素本身。2 基本指令HyperLogLog提供了三个基本指令。2.1 pfadd key element [element …]将指定元素“添加”到HyperLogLog中,可以“添加”多个元素。127.0.0.1:6379> pfadd原创 2021-05-14 16:42:01 · 200 阅读 · 0 评论 -
Redis位图
转载:Redis修行 — 位图实战 (juejin.cn)在Redis 中,位图 Bitmaps 不是实际的数据结构,而是 string 字符串类型上定义的一组 位操作。在 Redis 中字符串限制最大为 512MB,所以位图中最大可以设置 2^32 个不同的位(42.9亿个)。图位的最小单位是比特(bit),每个bit的值只能是0或1。1 基本命令SETBIT key offset value设置指定key的值在offset处的bit值,offset从0开始(从左边开始)。返回值为在offs.转载 2021-05-14 15:28:22 · 262 阅读 · 0 评论 -
Redis实现分布式锁
分布式锁实际上是分布式系统中的 “占坑” 行为。对于共享资源,需要分布式锁来保证数据一致性。分布式锁的特征:互斥性:任意时刻,只有一个客户端能持有锁。锁超时释放:持有的锁超时,可以释放,防止不必要的资源浪费,也可以防止死锁。可重入:一个线程如果获取了锁之后,可以再次对其请求加锁。高性能和高可用:加锁和解锁需要开销尽可能低,同时也要保证高可用,避免分布式锁失效。安全性:锁只能被持有的客户端删除,不能被其他客户端删除。1 Redis实现分布式锁的方案1.1 setnx + expire(有缺原创 2021-05-13 16:08:15 · 279 阅读 · 0 评论 -
Redis的5种数据结构和应用场景
Redis 支持 5 种数据结构:string (字符串)list(列表)hash(字典)set(集合)zset(有序集合)Redis 所有的数据结构都是以唯一的 key 字符串作为名称,通过这个 key 来获取相应的 value 数据。5 种数据结构是指 value 的不同结构。1 string(字符串)Redis 没有直接使用 C 语言中的传统字符串,而是自己构建了一种名为 简单动态字符串(simple dynamic string, SDS) 的抽象类型。在 Redi原创 2021-05-10 17:10:52 · 999 阅读 · 0 评论 -
redis缓存穿透、缓存击穿、缓存雪崩、热点数据集失效问题
1 引言在我们平时的项目中,有一些数据是不怎么变化但是会被频繁地查询的,为了快速地获取这些数据的同时减少查询数据库的操作,我们往往引入缓存机制来缓存这些数据。因为这些数据我们没有必要每次查询的时候都去查询一次数据库,特别是对于高QPS的系统来说,每次都去查询数据库,对于数据库的压力是非常大的。当我们在原有的系统中引入缓存机制之后,我们的业务系统大概的调用流程如下图所示:当业务系统发起某一...转载 2019-05-04 19:22:50 · 1470 阅读 · 0 评论 -
docker快速搭建redis容器
通过docker命令快速搭建redis容器首先下载redis镜像,使用5.0.7版本:docker pull redis:5.0.7通过docker image inspect redis:5.0.7可以看到容器的数据是存在/data里面的。我们在宿主机器创建保存数据的目录以及redis配置文件的目录:# 创建保存数据的目录mkdir -p /home/docker/redis/da...原创 2020-03-08 17:09:52 · 535 阅读 · 0 评论 -
Redis知识点总结
安装和使用CentOS 7 64位安装redis-5.0.5[docker安装运行redis]知识点原创 2021-05-09 14:07:43 · 167 阅读 · 0 评论 -
CentOS 7 64位安装redis-5.0.5
1、解压tar -zxvf redis-5.0.5.tar.gz2、编译cd redis-5.0.5make最后会有一句 It's a good idea to run 'make test' 说明编译成功。3、安装安装redis到/usr/local/redis下面。make PREFIX=/usr/local/redis install安装完成后,在usr/loc...原创 2019-07-14 00:30:30 · 548 阅读 · 0 评论 -
使用spring-boot-starter-data-redis访问redis入门示例(默认使用Lettuce)
1、 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2、redis基本配置在applicati...原创 2019-07-21 00:59:35 · 3446 阅读 · 0 评论