Redis
文章平均质量分 55
毕竟尹稳健
凸头小白
展开
-
Redis消息队列
使用队列的好处在于解耦:所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。不过要注意的是,当队列中没有消息时RPOP或LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。原创 2022-11-19 13:50:09 · 708 阅读 · 0 评论 -
Redis缓存穿透和雪崩
Redis缓存穿透和雪崩 缓存穿透(查不到) 概念 缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。 解决方案 布隆过滤器 缓存空对象 但是这种方法会存在两个问题: 1、如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键;原创 2022-04-03 16:44:39 · 104 阅读 · 0 评论 -
Redis主从复制
Redis主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);==数据的复制是单向的,只能由主节点到从节点。==Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用主要包括: 1、数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。原创 2022-04-03 16:43:42 · 176 阅读 · 0 评论 -
Redis发布订阅
Redis发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 测试 订阅者: 127.0.0.1:6379> S原创 2022-04-03 16:42:29 · 269 阅读 · 0 评论 -
Redis持久化
Redis持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久化功能! RDB(Redis DataBase) 什么是RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件,替换上次持久化好的文件。整个过程中,原创 2022-04-03 11:06:54 · 126 阅读 · 0 评论 -
Redis.conf详解
Redis.conf详解 启动的时候,就通过配置文件来启动! 1、配置文件unit单位对大小写不敏感 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # units are case insensitive so 1GB 1Gb 1gB原创 2022-04-03 11:06:18 · 369 阅读 · 0 评论 -
SpringBoot整合Redis
SpringBoot整合 说明:在SpringBoot2.x之后,原来使用的Jedis被替换为lettuce Jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用Jedis pool连接池! lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数量 源码分析 @Bean @ConditionalOnMissingBean( name = {"redisTemplate"} // 我们可以自定义一个redisTemplate原创 2022-04-03 11:05:37 · 149 阅读 · 0 评论 -
Reids---Jedis基本操作
Jedis 什么是Jedis? Redis官方推荐的Java连接工具!使用Java操作Redis中间件!如果你要使用Java操作Redis,那么一定要对Jedis十分熟悉! 1、导入对应的依赖 <!-- 导入Jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI原创 2022-04-02 11:22:57 · 670 阅读 · 0 评论 -
Redis事务
事务 Redis事务的本质:一组命令的集合!一个事务中的所有事务都会被序列化,在事务执行过程中,会按照顺序执行! 一次性、顺序性、排他性!执行一系列的命令! --------------- 队列 set set set 执行 --------------- Redis单条命令是保存原子性的,但是事务不保证原子性! Redis事务没有隔离级别的概念! 所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!Exec Redis事务: 开启事务(MULTI) 命令入队(。。。) 执行事原创 2022-04-02 11:22:03 · 91 阅读 · 0 评论 -
Redis中Hyperloglog和Bitmaps数据类型
Hyperloglog 什么是基数? A{1,3,5,7,8,7} A{1,3,5,7,8} 基数(不重复的元素的个数) = 5 ,可以接受误差! Redis Hyperloglog 基数统计的算法! pfadd key element … 给key中添加元素 pfcount key 计算key中有多少个不重复的元素(基数) pfmerge destination key1 key2 :将多个key合并到destination(目标)中,如果有重复的只会添加一次重复的数据! 127.0.0.1:6原创 2022-04-02 11:21:31 · 376 阅读 · 0 评论 -
Redis中geospatial(地理位置)数据类型
geospatial(地理位置) 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人! geoadd key longitude latitude member :给key中添加元素经纬度和元素名称(经度:longitude,纬度:latitude),规则:地球两极是无法直接添加的! geopos key member :获取key指定城市(member)的经度和纬度 geodist key member1 member2 [unit]:计算key两个城市直接的距离,单位 ###########原创 2022-04-02 11:20:51 · 751 阅读 · 0 评论 -
Redis中Zset数据类型
Zset(有序集合) 在set的基础上,增加了一个值,set k1 v1, zset k1 score v1。所有命令都是以z开头 zadd key score value … 给key集合添加一个值,score是排序 ,还能同时添加多个值 zrangebyscore key min max withscores : 根据key集合中的value根据min到max进行排序,withscores将score显示出来 zrem key member : 将key集合中的member(元素)移除 zcard原创 2022-04-02 11:20:16 · 739 阅读 · 0 评论 -
Redis中Hash(哈希)数据类型
Hash(哈希) Map集合,key:Map,Map:<field:value>,命令都是h开头 hset key field value 创建一个key哈希,包含一个field:value hget key field 根据key 中的field获取value hmset key field1 value1 field2 value2 … 可以一次性创建多个field:value hmget key field1 field2 … 可以一次性获取多个field的值 hgetall k原创 2022-03-31 21:25:55 · 510 阅读 · 0 评论 -
Redis中Set(集合)数据类型
Set(集合) set中值是不能重复的,如果添加相同元素,会添加失败 set 中所有命令都是s开头的 sadd key value 给key集合添加value smembers key 查看key集合中所有的value sismember key value 查看key集合中是否含有value ,含有返回1,反之返回0 scard key 获取key集合中的元素个数 srem key value 移除key集合中的value元素 SRANDMEMBER key count 随机获得key集合中coun原创 2022-03-31 21:25:19 · 504 阅读 · 0 评论 -
Redis中List数据类型
List 所有的list命令都是以l开头,Redis不区分大小写 lpush key value 将一个值插入到列表头部 rpush key value 直接将数据添加到列表末尾 lrange key start pop 根据索引[start,stop]获取列表的元素 ,lrange key 0 -1 获取列表所有的元素 lpop key 移除列表中左边的值 rpop key 移除列表中右边的值 lindex key index 根据索引查看value llen key 查看key的长度 lrem ke原创 2022-03-31 16:28:24 · 543 阅读 · 0 评论 -
Redis中String数据类型
String(字符串) append key value 在原有的value上添加值,如果key原先不存在就新建一个key和value不是追加 substr key start len 截取key,从start开始,截取len的长度 strlen key 获取key的长度 incr key 自增1 decr key 自减1 incrby key num 增加key ,增加num decrby key num 减少key,减少num getrange key start end 截取字符key [st原创 2022-03-31 16:27:43 · 192 阅读 · 0 评论 -
Redis基本认识
Redis 概述 Redis是什么? Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis能干嘛? 1、内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof) 2、效率高,可以用于高速缓存 3、发布订阅系统 4、地图信息分析 5、计时器、计数器(浏览量!) 6、。。。。。 特性 1、多样的数据类型 2、持久原创 2022-03-31 14:05:45 · 578 阅读 · 0 评论