Redis
文章平均质量分 55
毕竟尹稳健
凸头小白
展开
-
Redis消息队列
使用队列的好处在于解耦:所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。不过要注意的是,当队列中没有消息时RPOP或LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。原创 2022-11-19 13:50:09 · 572 阅读 · 0 评论 -
Redis缓存穿透和雪崩
Redis缓存穿透和雪崩缓存穿透(查不到)概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。解决方案布隆过滤器缓存空对象但是这种方法会存在两个问题:1、如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键;原创 2022-04-03 16:44:39 · 88 阅读 · 0 评论 -
Redis主从复制
Redis主从复制概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);==数据的复制是单向的,只能由主节点到从节点。==Master以写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用主要包括:1、数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。原创 2022-04-03 16:43:42 · 139 阅读 · 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 · 232 阅读 · 0 评论 -
Redis持久化
Redis持久化Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久化功能!RDB(Redis DataBase)什么是RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件,替换上次持久化好的文件。整个过程中,原创 2022-04-03 11:06:54 · 86 阅读 · 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 · 325 阅读 · 0 评论 -
SpringBoot整合Redis
SpringBoot整合说明:在SpringBoot2.x之后,原来使用的Jedis被替换为lettuceJedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用Jedis pool连接池!lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数量源码分析@Bean@ConditionalOnMissingBean( name = {"redisTemplate"} // 我们可以自定义一个redisTemplate原创 2022-04-03 11:05:37 · 129 阅读 · 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 · 624 阅读 · 0 评论 -
Redis事务
事务Redis事务的本质:一组命令的集合!一个事务中的所有事务都会被序列化,在事务执行过程中,会按照顺序执行!一次性、顺序性、排他性!执行一系列的命令!--------------- 队列 set set set 执行 --------------- Redis单条命令是保存原子性的,但是事务不保证原子性!Redis事务没有隔离级别的概念!所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis事务:开启事务(MULTI)命令入队(。。。)执行事原创 2022-04-02 11:22:03 · 71 阅读 · 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 · 357 阅读 · 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 · 706 阅读 · 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 · 705 阅读 · 0 评论 -
Redis中Hash(哈希)数据类型
Hash(哈希)Map集合,key:Map,Map:<field:value>,命令都是h开头hset key field value 创建一个key哈希,包含一个field:valuehget key field 根据key 中的field获取valuehmset key field1 value1 field2 value2 … 可以一次性创建多个field:valuehmget key field1 field2 … 可以一次性获取多个field的值hgetall k原创 2022-03-31 21:25:55 · 473 阅读 · 0 评论 -
Redis中Set(集合)数据类型
Set(集合)set中值是不能重复的,如果添加相同元素,会添加失败set 中所有命令都是s开头的sadd key value 给key集合添加valuesmembers key 查看key集合中所有的valuesismember key value 查看key集合中是否含有value ,含有返回1,反之返回0scard key 获取key集合中的元素个数srem key value 移除key集合中的value元素SRANDMEMBER key count 随机获得key集合中coun原创 2022-03-31 21:25:19 · 483 阅读 · 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 根据索引查看valuellen key 查看key的长度lrem ke原创 2022-03-31 16:28:24 · 501 阅读 · 0 评论 -
Redis中String数据类型
String(字符串)append key value 在原有的value上添加值,如果key原先不存在就新建一个key和value不是追加substr key start len 截取key,从start开始,截取len的长度strlen key 获取key的长度incr key 自增1decr key 自减1incrby key num 增加key ,增加numdecrby key num 减少key,减少numgetrange key start end 截取字符key [st原创 2022-03-31 16:27:43 · 170 阅读 · 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 · 522 阅读 · 0 评论