Redis
文章平均质量分 80
leo_messi94
这个作者很懒,什么都没留下…
展开
-
Redis(十九) -- 过期删除策略和内存淘汰策略
第一种和第三种为主动删除策略,而第二种则为被动删除策略。原创 2023-02-02 16:12:08 · 579 阅读 · 0 评论 -
Redis -- IO多路复用及redis6的多线程
Redis 的 I/O 多路复用程序函数有 select、poll、epoll、kqueue。select 作为备选方案,由于其在使用时会扫描全部监听的文件描述符,并且只能同时服务 1024 个文件描述符,所以是备选方案。I/O 多路复用模型是利用 select、poll、epoll 函数可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉。原创 2023-01-12 16:26:36 · 1185 阅读 · 0 评论 -
Redis(十八) -- 布隆过滤器
布隆过滤器是由一个固定大小的二进制向量或者位图(bitmap)和一系列映射函数组成的。在初始状态时,对于长度为 m 的位数组,它的所有位都被置为0。如下图所示:当有变量被加入集合时,通过 K 个映射函数将这个变量映射成位图中的 K 个点,把它们置为 1。查询某个变量的时候我们只要看看这些点是不是都是 1 就可以大概率知道集合中有没有它了。原创 2022-10-20 17:29:14 · 1153 阅读 · 0 评论 -
Redis应用(一) -- 分布式锁
分布式锁出现的原因随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同的机器上,这将使原单机部署情况下的并发空指锁策略失效,单纯的java api并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分数锁要解决的问题。解决方案基于数据库实现基于缓存(redis等),性能最高基于zookeeper,可靠性最高Redis锁需要满足的条件互斥性。再任意时刻,只能有一个客户端持有锁不会发生死原创 2021-09-08 18:48:19 · 96 阅读 · 0 评论 -
Redis(十六) -- Redis问题(一) -- 缓存穿透、击穿、雪崩、双写key不一致
缓存穿透key对应的数据在数据源并不存在,每次针对次key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id来获取用户信息,缓存和数据库中都没有该条数据,黑客可能会利用此漏洞来攻击压垮数据库目的是让服务器崩溃出现的现象应用服务器压力变大了redis命中率降低一直查询数据库出现的原因redis中没有数据,数据库中也没有出现很多非正常url访问解决方案一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存原创 2021-09-08 00:06:22 · 281 阅读 · 0 评论 -
Redis(十五) -- Redis配置(四) -- 集群
Redis集群解决的问题:容量不够并发写操作集群:Redis集群实现了对Redis的水平扩容,即启动了N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/NRedis集群通过分区(partition)来提供一定程度的可用性(availability):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。设置集群此处省略6个redis的集群配置。设置redis-trib后可以看到,redis自动给我们设置了3主3从的配置。在集群中原创 2021-09-01 00:24:48 · 309 阅读 · 0 评论 -
Redis(十四) -- Redis配置(三) -- 主从复制
Redis主从复制是什么?主从复制:就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主用处:读写分离,性能扩展容灾快速恢复配置临时从服务器:步骤:设置三个conf文件,端口号、文件名字不一样通过这些配置文件启动redis查看服务器状态info replication,可以看到每个服务器都是主服务器设置称为某个服务器的从服务器:slaveof ip port设置6380和6381为6379的从服务原创 2021-08-31 20:46:14 · 148 阅读 · 0 评论 -
Redis(十一) -- Redis数据结构(八) -- Geo
简介GEO,geographic的缩写,即地理信息。该类型,就是元素的二维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度hash等操作。两极无法添加,一般会下载城市数据,直接通过java程序一次性导入。有效的经度从-180°到180°。有效的纬度从-85.05112878°到85.05112878°。当坐标位置超出指定范围时,该命令会返回一个错误。已经添加的数据,无法再次添加。原理,工作方式这些数据将会存储到sorted set这样的目的原创 2021-08-28 20:17:42 · 875 阅读 · 0 评论 -
Redis(十) -- Redis数据类型(七) -- HyperLogLog
简介在工作中,经常越到原创 2021-08-25 23:52:36 · 402 阅读 · 0 评论 -
Redis(十三) -- Redis配置(二) -- 持久化
方式一:RDB(Redis DataBase)在指定的间隔时间内,将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存中比如每隔10分钟,在现在redis的存储快照写到硬盘中去。备份数据执行方式:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完原创 2021-08-25 20:39:49 · 925 阅读 · 0 评论 -
Redis(十二) -- Redis配置(一) -- 事务
简介Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队multi,Exec,discardmulti:开启事务,开始组队discard:放弃事务,放弃组队exec:执行组队内的命令从输入Multi命令开始,输入的命令都会一次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令对类中的命令依次执行组队的过程中,可以通过discar原创 2021-08-25 19:44:14 · 445 阅读 · 0 评论 -
Redis(九) -- Redis数据结构(六) -- bitmaps
简介Redis的bitmaps数据结构可以实现对位的操作Bitmaps本身不是一种数据类型,实际上它就是字符串,但是可以对字符串的位进行操作Bitmaps提供了单独的一套命令,所在redis中使用Bitmaps和使用string类型的方法不太相同。可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在bitmaps中叫做偏移量命令...原创 2021-08-22 13:50:18 · 96 阅读 · 0 评论 -
Redis(八) -- Redis数据类型(五) -- hash
1.hest:设置指定key的字段和值格式:hset key field value如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写返回值:1如果field是一个新的字段0如果field原来在map里面已经存在复杂度:O(1)redis> HSET myhash field1 "Hello"(integer) 1redis> HGET myhash field1"Hello"2.hsetnx:只有在k原创 2021-08-12 10:57:56 · 180 阅读 · 0 评论 -
Redis(七) -- Redis数据类型(四) -- sorted set(zset)
1.zadd:添加元素到有序集合中格式:ZADD key [NX|XX] [CH] [INCR] score member [score member …]添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置。如果key不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集合,就像原来存在一个空的有序集合一样。如果key存在,但是类原创 2021-08-09 22:20:56 · 2860 阅读 · 0 评论 -
Redis(五) -- Redis数据类型(二) -- list
格式rpop key返回值:返回第一个元素的值,或者当 key 不存在时返回 nil复杂度:O(1)格式例如:假设 source 存储着列表 a,b,c, destination存储着列表 x,y,z。执行 RPOPLPUSH 得到的结果是 source 保存着列表 a,b ,而 destination 保存着列表 c,x,y,z。如果 source 不存在,那么会返回 nil 值,并且不会执行任何操作。原创 2021-08-05 20:36:52 · 525 阅读 · 0 评论 -
Redis(六) -- Redis数据类型(三) -- Set
Set对外提供的功能与list类似,是一个列表的功能。特殊之处在于set是可以的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这是list所不能提供的。Set是String类型的。,所以添加删除查询的复杂度都是O(1)原创 2021-08-04 18:40:58 · 527 阅读 · 0 评论 -
Redis(四) -- Redis数据类型(一) -- String
string是Redis最基本的类型,可以理解成与memcached一模一样的类型,一个key对应一个valuestring类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象一个redis中字符串value最多可以是512M。原创 2021-08-01 23:40:11 · 1162 阅读 · 0 评论 -
Redis(二) -- redis.conf详解(redis6)
版本:6.2.5# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf# 如果要配置跟内存大小相关的参数是可以这样配置:# Note on units: when memory原创 2021-07-28 19:34:09 · 1012 阅读 · 0 评论 -
Redis(一) -- Redis6安装,tar与yum安装
进入到redis官网复制下载地址。原创 2021-07-27 20:15:43 · 1581 阅读 · 2 评论 -
Redis(三) -- redis简介、各数据类型应用
适用场景:与memcached的区别:Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire原创 2020-07-08 18:12:41 · 528 阅读 · 1 评论 -
RedisTemplate使用
RedisTemplate操作key操作key的失效时间RedisTemplate.expire(String key, long timeout, TimeUnit unit)RedisTemplate.boundValueOps(String key).expire( long timeout, TimeUnit unit)设置key的失效时间,timeout是时间参数,timeu...原创 2019-11-25 22:09:07 · 3486 阅读 · 0 评论 -
使用Jedis报错:Please close pipeline or multi block before calling this method
问题重现:在使用Jedis的事务之后,使用Response的get方法获取数据后又对数据进行了操作。https://blog.csdn.net/fly910905/article/details/79760162原创 2019-11-13 00:30:57 · 853 阅读 · 0 评论