Redis
文章平均质量分 58
Redis缓存
pipizhen_
昨日之日不可留。
展开
-
SpringBoot集成Redis缓存
SpringBoot集成Redis缓存1、新建SpringBoot项目后,引入redis依赖<!--redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、编写yml配置文件serv原创 2021-01-29 15:34:59 · 800 阅读 · 2 评论 -
Redis缓存穿透和雪崩
redis缓存穿透和雪崩1、什么是Redis 缓存穿透?缓存穿透的概念很简单,用户想要查询一个数据,发现 redis 内存数据库没有,于是向持久层数据库查询。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就出现了缓存穿透。2、缓存穿透的两种解决方案:(1)布隆过滤器布隆过滤器是一种数据结构,对所有可能查询的参数以 hash 形式存储,在控制层先行校验,不符合则丢弃,减小了对底层存储系统的查询压力。(2)缓存空对象当持久层数据库未查询原创 2021-01-29 15:13:47 · 267 阅读 · 0 评论 -
Redis哨兵模式
Redis哨兵模式1、介绍哨兵模式首先,哨兵模式是一种监控机制,并不是redis独有的。哨兵模式是一种特殊的模式,首先redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是:哨兵通过发送命令,等待redis服务器响应,从而监控运行的多个redis实例是否存活有效。哨兵的作用:通过发送命令,监控主机和从机的运行状态;当哨兵监测到master宕机后,会自动将slave切换成master,然后通过发布订阅模式通知其他的从机,修改配置,连接新主机。然而一个哨兵进程对red原创 2021-01-29 15:01:32 · 87 阅读 · 0 评论 -
Redis主从复制
redis主从复制一主多从:一个主节点,多个从节点。每个redis默认都是主节点。查看redis的主机从机信息:info replication配置当前redis为从节点,即认谁做老大:slaveof ip port如果自己想当回主机:slaveof no one用命令配置的只是暂时的,重启后失效。真实情况下不会这么做,而是直接配置文件。在从机的redis配置文件中找到配置:#replicof 例如配置成:replicof 127.0.0.1 6379如果主机配置了密码,从机需要主机的原创 2021-01-29 14:53:11 · 81 阅读 · 0 评论 -
Redis持久化之AOF
Redis持久化之AOFRedis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 AOF 则是通过保存Redis服务器所执行的写命令来记录数据库状态。AOF默认是不开启的,需要我们自己去配置文件开启。1、AOF配置文件在 redis.conf 配置文件中APPEND ONLY MODE下:######################## APPEND ONLY MODE ############################ Redis 默认原创 2021-01-29 14:42:28 · 85 阅读 · 0 评论 -
Redis持久化之RDB
Redis持久化之RDB由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。为了解决这个缺点,Redis提供了将内存数据持久化到磁盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快原创 2021-01-29 14:23:32 · 170 阅读 · 0 评论 -
Redis配置文件详解
Redis配置文件详解直接附上配置文件全部信息:# redis版本:5.0.3################################### NETWORK #################################### 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求bind 127.0.0.1# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问# 拒绝外部访问。要是开启了密原创 2021-01-29 11:49:55 · 110 阅读 · 0 评论 -
Redis中的监控实现乐观锁
Redis中的监控,实现乐观锁1、执行以下命令,但事务先不执行:2、在事务执行之前,假设又有一个线程改变了zhangsan的值:我们再开一个用户连接redis:3、再执行上面的事务:我们发现事务没有执行,因为我们用了watch命令监控了zhangsan,lisi。当他们的值有发生变化时,事务不会执行。即使你在事务执行前,别的线程set zhangsan 100,即值没变,也会监控到。取消监控:unwatch当事务执行完之后会自动取消监控的keys。当事务执行失败后,需要重新监控k原创 2021-01-29 11:10:36 · 93 阅读 · 0 评论 -
Redis中基本事务的操作
Redis基本的事务操作1、Redis中事务的本质:一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行的过程中,会按照顺序执行。Redis中的事务没有隔离级别的概念,不存在脏读,幻读等一系列情况。单个 Redis 命令的执行是原子性的,即一个命令那么执行成功,要么执行失败。但 Redis 没有在事务上增加任何维持原子性的机制,所以Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造原创 2021-01-28 11:47:51 · 250 阅读 · 0 评论 -
Redis之Bitmap类型
什么是位图Bitmap?位图是用来存储状态的,只能储存0和1。0和1能表示很多信息,例如:成功,失败。登录,未登录状态。打卡,未打卡。等等基本命令:(1)存储位图元素:setbit key offset value一次只能存一个元素。offset是下标,范围为[0,2^32-1),可以稍微再大一些些,可以试一下大到什么时候会报错。value只能是0或者1。返回值:返回指定下标原来的存值,如果原来没有存值,默认为0。(2)获取位图指定下标的值:getbit key offset原创 2021-01-28 11:40:47 · 158 阅读 · 0 评论 -
Redis之HyperLogLog类型
HyperLogLog(基数统计)什么是基数?不相同的数叫做基数。问题的引入:在传统时期,如果你要计算一个网页的访问量,如何计算?做法是将用户的唯一标识存入一个set集合中,然后获取set的集合元素的大小。当集合元素量比较小的时候,效果还行,当用户量超大时,这个集合或者多个集合占用的储存量太大了。我们只不过想要个访问量这个数字而已,但却要存储这么多无效信息,不划算。HyperLogLog不是集合,不会存储元素本身,而是添加的时候计数不重复元素的一种算法,不是redis独有的。当添加量非常大时,存原创 2021-01-28 11:33:46 · 207 阅读 · 0 评论 -
Redis之Geo类型
Geo(地理空间geospatial)地理空间的三要素:经度longitude,纬度latitude,名称。有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。地理空间位置可以百度:Geo在线查询Redis的Geo命令只有6个,都以Geo开头。常用命令:(1)添加地理空间:GeoAdd key longitude latitude member …我们设置这些地理位置的信息不会自己手动添加,而是读取配置文件,或者获取其他资源,然后用程序直接原创 2021-01-28 11:21:35 · 397 阅读 · 0 评论 -
Redis之Zset类型
Redis中存取Zset类型Zset:有序集合Zset可以认为是一种特殊的set集合,只不过另外用了一个字段来存排序的依据,也可以看做权重,这个字段叫分数score,这个score是float类型。(1)添加值:zadd key score member [score member …]返回值:添加成功的成员数,不包括更新的。key后面可以添加一些参数:[xx|nx] [ch] [incr]Xx: 只更新已经存在的成员,不添加新成员Nx: 只添加新成员,不更新已经存在的成员Ch: 修改返回原创 2021-01-28 11:09:48 · 573 阅读 · 0 评论 -
Redis之Hash类型
Redis中存取Hash类型Hash类型保存的值是一个map集合,又因为redis是key-value类型,故hash类型在redis中是key - map,即key - <field,value>。Map的特点是存储键值对,也是无序不可重复的。常用命令:(1)将键值对存入hash中:hset key field value如果key是不存在的,会新建一个hash集。如果field是hash中不存在,就加入该键值对。如果field在hash中已经存在,就覆盖原来的值。返回值:原创 2021-01-28 11:00:13 · 1469 阅读 · 0 评论 -
Redis之Set类型
Redis存取Set类型set集合的特点是,元素无序不可重复。常用命令:(1)添加元素:sadd key value [key…]返回值:添加元素成功的个数。当集合中存在的值,不会添加,但会继续添加不重复的值。(2)查看set中的所有元素:smembers key(3)查看set中是否存在某个元素:sIsMember key value返回值:1表示存在,0表示不存在。(4)查看set集合中元素的个数:scard key返回值:当key不存在时,返回0。key不是set原创 2021-01-28 10:51:06 · 2949 阅读 · 0 评论 -
Redis之List类型
Redis中存取List类型List为列表,根据不同的数据结构,可以为栈,队列,链表等。但redis中的list功能结合了这些数据结构的各个优点,真的强大。(1)左插入:lpush key value右插入:rpush key value如果key列表不存在,push前会创建一个空的列表。返回值:push后列表的长度。(2)取出列表指定下标的值:lrange key start stop注意:下标支持负数。1先从左边进去,2再从左边进去,3再从右边进去,4再从右边进去。(3)左移除原创 2021-01-28 10:40:50 · 467 阅读 · 1 评论 -
Redis之String类型
Redis中存取String类型redis中的String类型和java中的字符串类型类似,也有一些方法。Redis中String类型的最大长度为是2^29-1(536870911),因为redis字符串限制在512M大小。常用命令:(1)向key中存储的值后面追加:append key value如果指定的key不存在,则相当于新建一个,即作用等于:set key value(2)获取key的存值的长度:strlen key(3)指定key的值自增1:incr key指定key的原创 2021-01-28 10:04:14 · 1786 阅读 · 0 评论 -
Redis入门
Redis入门官网:https://redis.io/中文网:http://www.redis.cn/windows版本:https://github.com/MicrosoftArchive/redis/tagswindows版本下载:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100redis默认端口:6379基本命令:(1)测试连接:ping连接成功,会自动响应一个PONG。(2)切换数据库:sel原创 2021-01-28 09:27:23 · 120 阅读 · 0 评论