![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 76
redis入门
#Hideonbush
这个作者很懒,什么都没留下…
展开
-
redis过期策略与淘汰策略
redis过期策略与淘汰策略1.过期策略2.淘汰策略3.在哪里配置?4.Lazy Free1.过期策略1.redis中所有的key都可以通过expire命令来设置过期时间,所有被设置了过期时间的key会被存放在一个独立的字典中,删除这些key有两种不同的策略:1)定时删除,redis默认每1秒进行10次过期扫描,每次从字典中取出20个key,删除这20个key中已经过期的key,如果删除的数量大于1/4,那么会继续取20个key出来,继续删除20个key中已经过期的key,以此类推,为了避免无限循环扫原创 2021-10-30 14:59:56 · 354 阅读 · 0 评论 -
redis之Stream
redis之Stream1.Stream基本介绍2.基本命令3.消息消费1.Stream基本介绍1.从redis5.0开始,推出了Stream功能。在Stream中有一个消息链表,所有加入链表中的消息都会被串起来,每一条消息都有自己唯一的ID,还有对应的消息内容,消息内容就是key-value。一个Stream上可以有多个消费者,每个消费者都有一个游标,用于访问消息,在消息链表移动就代表着消费消息,多个消费者之间互不影响。2.基本命令1.xadd,添加消息,返回的是消息的IDxadd mes *原创 2021-10-29 00:41:57 · 290 阅读 · 0 评论 -
redis集群的搭建
redis集群的搭建1.集群介绍2.集群搭建3. 动态添加节点1.集群介绍2.集群搭建3. 动态添加节点原创 2021-10-25 00:02:10 · 194 阅读 · 0 评论 -
redis搭建主从同步
redis搭建主从同步1.CAP原理二级目录三级目录1.CAP原理1.在分布式系统中,基本所有的系统都只能实现CAP中的两个选项,P是要必定实现的。2.C:consitent,代表一致性,A:availablity,代表可用性,P:partition tolerance 分布式容忍性。3.在redis中,redis其实就选择了CA这两个选项,假如网络断开了,主从连接失败,主从都可以继续使用,数据有可能不一致,但是redis会尽量保持数据一致,就是网络再次连接时,从机会尽量同步更新主机的数据。二级目原创 2021-10-24 02:25:11 · 2299 阅读 · 0 评论 -
redis事务
redis事务redis事务简介2.用java代码演示redis中事务redis事务简介1.我们知道关系型数据库都有事务,下面就拿mysql的事务为例子begin #开启事务commit #提交事务rollback #回滚事务2.redis中的与事务的相关命令如下multi #开启事务exec #结束事务discard #回滚事务3.注意:关系型数据库中事务有四大特性,原子性,隔离性,一致性,持久性,但是redis中只有隔离性,如下图可以看出其不具备原子性,比如下有一条命令出错了,原创 2021-10-18 00:05:06 · 109 阅读 · 0 评论 -
redis中的持久化方式
这里写目录标题1.RDB(快照)2.AOF1.RDB(快照)1.原理redis使用操作系统的多进程机制来实现快照持久化,redis在持久化时,会调用glibc函数,fork一个子进程,然后将持久化操作完全交给子进程去处理,而父进程则继续处理客户端的请求,在这个过程中,子进程只能看到它自己产生的那一瞬间内存中的数据,这也是为什么叫做快照!2.配置1)在redis中,快照的持久化方式默认是开启的,默认情况下会产生一个dump.rdb文件,这个文件就是备份下来的文件,当redis启动时,其会默认加载这个原创 2021-10-17 00:23:45 · 214 阅读 · 0 评论 -
redis单线程如何处理高并发的
这里写目录标题1.IO(阻塞IO)和NIO(非阻塞IO)的概念2.redis的线程模型3.redis的通信协议1.IO(阻塞IO)和NIO(非阻塞IO)的概念1.jdk1.4引入了NIO,但也有很多人在用阻塞IO,这两者有什么区别呢?假设线程1现在要从服务端读取1个10个字节的数据,但是只读到了5个字节,没有读完,那么线程1就会进入到阻塞状态。NIO就是线程1即使只读到了5个字节也会直接将这读到的5个字节返回,不会阻塞,等剩下5个字节加载进来后,再去读取。2.redis的线程模型1.redis虽然是原创 2021-10-16 19:51:53 · 1814 阅读 · 0 评论 -
redis之scan
redis之scan1.概念2.基本用法1.概念scan是redis2.8以后引入的,它可以说是keys的一个升级版,我们知道keys命令可以用来查询key,可以使用通配符,但是没有分页功能,而且redis是单线程,所以key的查询比较消耗时间,特别是数据量大的时候,scan具备keys的功能,而且还可以分页,不会阻塞线程,还可以控制每次返回的结果数2.基本用法事先准备1万条数据package com.yl;import redis.clients.jedis.Jedis;public原创 2021-10-13 23:28:19 · 915 阅读 · 0 评论 -
redis中使用GeoHash
redis中使用GeoHash1.GeoHash底层原理2. 基本使用1.GeoHash底层原理1.Redis3.2开始提供GEO模块,该模块使用了GeoHash算法2.核心思想:GeoHash是一种地址编码方式,其将二维的空间经纬度数据编码成一个一维字符串。我们大致可以将大致划分如下图这个范围。GeoHash算法就是基于这种思想,不断地去划分区域,划分次数越多,精度越高。3.具体算法:这里以广州的经纬度为例子,113.229259,23.17652这里就拿纬度23.17652来说,纬度的范围原创 2021-10-13 22:52:24 · 250 阅读 · 0 评论 -
redis限流案例
redis限流的使用1.简单限流2.二级目录3.三级目录1.简单限流1.实现原理:通过zset实现!2.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht原创 2021-10-12 00:08:12 · 137 阅读 · 0 评论 -
布隆过滤器的使用
布隆过滤器的使用1.场景2. 布隆过滤安装与启动3. 布隆过滤器的基本使用1.场景我们知道HyperLogLog可以统计pv,uv的个数,其主要用到的两个命令为pfadd,pfcount。没有其他命令去判断是否包含或者是否不包含某个元素。那么会有一种场景,就类似于短视频上的推送视频,怎么做到剔除掉以前已经推送过给用户的短视频了,涉及到一个去重的问题,而在布隆过滤器中有一个contains方法,可以去判断某个元素是否已存在,而且这种方式也很省内存空间,虽说精度存在一点问题,但是这种方式可以去重!2. 布原创 2021-10-11 00:32:14 · 2056 阅读 · 0 评论 -
redis中HyperLogLog的使用
redis中HyperLogLog的使用1.pv和uv的概念?2.使用HyperLogLog统计个数2.1 实现原理2.2 pom.xml2.3 JedisUtils2.4 测试模仿统计网站的用户个数2.pfmerge命令1.pv和uv的概念?pv即为page vie,代表网页的浏览次数。uv即为user view,代表用户个数2.使用HyperLogLog统计个数2.1 实现原理使用pfadd来添加数据,类似于sadd,使用pfcount来统计个数,类似于scard2.2 pom.xml&l原创 2021-10-10 16:55:53 · 147 阅读 · 0 评论 -
redis操作位
redis操作位1.redis的基本操作可以分为两大类1.1 零存整取1.2 整存零取2.统计2.1 bitcount命令2.2 bitpost命令3.BIT批处理3.1 bitfield key get命令获取某几位且返回一个数3.1 bitfield key set命令去修改值3.3 bitfield key incrby自增1.redis的基本操作可以分为两大类1.1 零存整取1.例如存储一个java字符串,j对应的ACII码为74,转为2进制为01001010,a对应的ACII码为a,转为2进原创 2021-10-10 16:21:12 · 435 阅读 · 0 评论 -
redis实现普通消息队列与延迟消息队列
redis实现普通消息队列与延迟消息队列1.redis实现普通消息队列1.1 实现原理1.2 pom.xml1.3 JedisUtils工具类1.4 消息类1.4 消息队列类1.5 消息入队测试1.5 消息出队测试2.redis实现延迟消息队列2.1 实现原理2.2 pom.xml2.2 JedisUtils工具类2.3 消息类2.4 延迟消息队列类2.5 消息入队测试2.6 消息出队测试1.redis实现普通消息队列1.1 实现原理利用lpush/rpush和lpop/blop(阻塞式)/rpo/b原创 2021-10-10 01:56:39 · 451 阅读 · 0 评论 -
redis实现分布式锁
redis实现分布式锁1.什么是分布式锁?1.1 情景1.2 用redis实现分布式锁的思路?2. 简单实现2.1 jedisutils2.1 测试3. (2.0简单实现分布锁)存在的问题以及解决方案3.1 存在的问题3.2 解决方案:锁的value用随机字符串来替代再结合lua脚本判断传入的key去redis中查到的value和传入的value是否一致,如果一致就del掉key,否则直接返回3.2.1 进入到redis文件,创建脚本文件3.2.2 release.lua脚本文件内容3.2.3 求出SHA1原创 2021-10-08 22:43:06 · 139 阅读 · 0 评论 -
通过jedis/lettuce远程连接到redis
通过jedis/lettuce远程连接到redis1.jedis连接到redis1.1 pom.xml(maven工程)1.2 通过vi redis.conf命令打开redis的配置文件,注释掉绑定本地地址和开启密码验证1.3 测试能否远程连接到redis,我的redis是装在虚拟机上的,所以以下ip地址为虚拟机ip地址1.4 通过连接池获取jedis对象,jedis对象的方法名和redis的一些常用命令很相似,可以见名思义地使用jedis的方法2.lettuce连接到redis2.1 pom.xml(ma原创 2021-10-05 13:01:58 · 567 阅读 · 0 评论 -
redis五种基本数据类型
redis基本数据类型一、String二、List三、Hash四、Set五、ZSet事实上,redis中所有的key都是字符串,所以这里说的五种基本数据类型都是针对于value而言一、String1.启动redis,并且通过cli进入到redis,123安装redis时设置的密码redis-server redis.confredis-cli -a 1232.常用命令1)set,给一个key赋值,key不存在会新增key,key如果已存在,则新的value会覆盖原有的valueset k原创 2021-10-03 14:32:00 · 508 阅读 · 0 评论 -
redis安装
这里写目录标题一、直接编译安装(linux环境)二、通过Docker安装(linux环境)三、直接安装(linux环境),不推荐一、直接编译安装(linux环境)1.提前准备好gcc环境yum install gcc-c++2.下载redis压缩包wget https://download.redis.io/releases/redis-6.2.5.tar.gz3、解压tar -zxvf redis-6.2.5.tar.gz4.进入redis目录cd redis-6.2.5/5原创 2021-10-03 13:18:26 · 91 阅读 · 0 评论