
redis
文章平均质量分 68
redis入门教程
胡八一、
这个作者很懒,什么都没留下…
展开
-
redis的多种用法
redis用法转载 2023-12-12 17:51:16 · 799 阅读 · 0 评论 -
redis哨兵模式
概述主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redi原创 2021-11-26 14:58:54 · 292 阅读 · 0 评论 -
Redis应用问题解决
缓存穿透问题描述key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。解决方案一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。解决方案:(1) 对空值缓存:如果一个查询返回的数据为空(不管是数据转载 2021-11-25 22:08:15 · 159 阅读 · 0 评论 -
Redis集群
单机的问题容量不够,redis如何进行扩容?并发写操作, redis如何分摊?另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址、端口等信息。之前通过代理主机来解决,但是redis3.0中提供了解决方案。就是无中心化集群配置。什么是集群Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。Redis 集群通过分区(partition)来提供一定程度的可用性(avai原创 2021-11-25 18:34:20 · 888 阅读 · 0 评论 -
Redis持久化之AOF
AOF是什么以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作AOF持久化流程(1)客户端的请求写命令会被append追加到AOF缓冲区内;(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;(3)AOF文件大小超过重写策原创 2021-11-25 15:17:52 · 177 阅读 · 0 评论 -
Redis持久化之RDB
官网介绍:http://www.redis.io是什么在 指定的时间间隔内 将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里备份是如何执行的Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式原创 2021-11-25 14:38:27 · 269 阅读 · 0 评论 -
Redis事务
Redis的事务定义Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。Multi、Exec、discard从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。组队的过程中可以通过discard来放弃组队。案例:组队成功,提交成功127.0.0.1:6379>原创 2021-11-25 13:55:58 · 139 阅读 · 0 评论 -
Redis与Spring Boot整合
整合步骤在pom.xml文件中引入redis相关依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring2.X集成redis所需common-p原创 2021-11-24 16:50:49 · 211 阅读 · 0 评论 -
Jedis测试
1、Jedis所需要的jar包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency>2、Jedis常用操作创建maven的工程创建测试原创 2021-11-24 16:36:11 · 1114 阅读 · 0 评论 -
Redis新数据类型——Geospatial
简介Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。命令1、geoadd(1)格式geoadd<key>< longitude><latitude><member> [longitude latitude member...] 添加地理位置(经度,纬度,名称)原创 2021-11-24 16:00:11 · 524 阅读 · 0 评论 -
Redis新数据类型——HyperLogLog
简介在工作当中,我们经常会遇到与统计相关的功能需求,比如统计网站PV(PageView页面访问量),可以使用Redis的incr、incrby轻松实现。但像UV(UniqueVisitor,独立访客)、独立IP数、搜索记录数等需要去重和计数的问题如何解决?这种求集合中不重复元素个数的问题称为基数问题。解决基数问题有很多种方案:(1)数据存储在MySQL表中,使用distinct count计算不重复个数(2)使用Redis提供的hash、set、bitmaps等数据结构来处理以上的方案结果精确,原创 2021-11-24 15:31:48 · 161 阅读 · 0 评论 -
Redis新数据类型——Bitmaps
简介现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 01100010和01100011,如下图合理地使用操作位能够有效地提高内存使用率和开发效率。Redis提供了Bitmaps这个“数据类型”可以实现对位的操作:(1) Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) ,原创 2021-11-24 01:57:32 · 621 阅读 · 0 评论 -
Redis的发布和订阅
什么是发布和订阅Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。Redis的发布和订阅1、客户端可以订阅频道如下图2、当给这个频道发布消息后,消息就会发送给订阅的客户端发布订阅命令行实现1、 打开一个客户端订阅c1SUBSCRIBE c12、打开另一个客户端,给c1发布消息hello注:返回的1是订阅者数量3、打开第一个客户端可以看到发送的消息注:发布的消息没原创 2021-11-24 01:11:55 · 645 阅读 · 0 评论 -
Redis有序集合Zset(sorted set)
简介Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。常用命令zadd <key&原创 2021-11-21 21:06:10 · 727 阅读 · 0 评论 -
Redis哈希(Hash)
简介Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储主要有以下2种存储方式:每次修改用户的某个属性需要,先反序列化改好后再序列化回去。开销较大。用户ID数据冗余而采用hash结构:通过 key(用户ID)原创 2021-11-21 16:23:24 · 3776 阅读 · 0 评论 -
Redis集合(Set)
简介Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变常用命令原创 2021-11-21 13:12:08 · 611 阅读 · 0 评论 -
Redis列表(List)
简介单键多值Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。常用命令lpush/rpush <key><value1><value2><value3> .... 从左边/右边插入一个或多个值。lpop/rpop <key>从左边/右边吐出一个值。值在键在,值光键亡。rpoplpu原创 2021-11-21 01:24:41 · 633 阅读 · 0 评论 -
Redis基础-字符串(String)
五大数据类型官网文档Redis-Key127.0.0.1:6379[1]> keys * #查看所有key(empty list or set)127.0.0.1:6379[1]> set name zhubayi #设置keyOK127.0.0.1:6379[1]> keys * #查看所有key1) "name"127.0.0.1:6379[1]> set age 1OK127.0.0.1:6379[1]> keys * #查看所有key1) "原创 2021-11-21 00:40:54 · 500 阅读 · 0 评论 -
Redis入门
基础的知识redis默认有16个数据库默认使用的是第0个可以使用 select 进行切换数据库!> select 1 #切换数据库OK> DBSIZE #查看数据库大小0127.0.0.1:6379[3]> keys * # 查看数据库所有的key1) "name"清除当前数据库flushdb清除全部数据库的内容 FLUSHALL明白Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网原创 2021-11-20 21:09:43 · 611 阅读 · 0 评论 -
windows安装redis
1、下载安装包:https://github.com/tporadowski/redis/releases在这里插入图片描述2、下载完毕得到压缩包:3、解压到自己电脑上的环境目录下的就可以的!Redis 十分的小。4、开启Redis,双击运行服务即可!5、使用redis客户单来来连接redis...原创 2021-11-18 15:16:15 · 372 阅读 · 0 评论