
Redis
文章平均质量分 56
InsistCode
不能停下来呀
展开
-
Redis面试题
Redis支持的数据类型?String字符串:格式: set key valuestring类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。Hash(哈希)格式: hmset name key1 value1 key2 value2Redis hash 是一个键值(key=>value)对集合。Redis hash是一个string类型的fiel.原创 2021-01-10 20:48:13 · 106 阅读 · 0 评论 -
Redis缓存穿透、击穿、雪崩
学习、面试重点缓存穿透当访问redis中一个没有的key时,导致缓存无法被击中,这时候每次请求给都会穿透到数据库进行查询导致数据的压力过大,有时可能直接挂掉。解决方案布隆过滤器拦截缓存空对象缓存击穿是指缓存中的某个key在过期的瞬间,有大量的请求访问,一般都是一些热点数据,但是缓存已经过期,请求就会来到数据库进行访问查询,并且回写缓存,导致数据库的压力过大。解决方案设置热点数据数据不过时加互斥锁缓存雪崩是指缓存采用了相同的过期时间,在某一时刻缓存同时失效,导致请求全部原创 2021-01-10 20:47:13 · 108 阅读 · 0 评论 -
Redis-哨兵模式
概述:哨兵模式自动实现主从切换技术,传统的主从切换是在主机发生宕机的后,需要手动去切换主机,然而这种方式费时费力,而且造成数据的丢失,如果能转换为自动的主从切换就能解决这些问题。哨兵模式是一种特殊的模式,Redis提供了哨兵的命令,哨兵是一个独立的进程,其原理是哨兵通过命令,等待Redis服务器的响应,从而监控运行多个Redis实例。如果某Redis服务器没有给哨兵响应结果,哨兵就会默认它发生了宕机。就会自动选举出来一个Master但是哨兵是一个进程我们不能保证他不会挂掉,所以需要添加多个哨兵来同时原创 2021-01-10 19:29:52 · 208 阅读 · 0 评论 -
宕机后主机的配置
层层链路我们将80端口的服务器作为81端口Redis服务器的主机测试将6381所属的主机转换为6380主机,这样就形成了上述层层链路。我们来查看下6380端口的信息他的角色依然是一个从机。下面我们来看一下原来主机6379的信息所属的从机显示一个。接下来再测试一下6379主机的数据能否加载到6381主机上能够获取到。其实很显然,从机之间的绑定形成的层层链路依然可以去将主机的信息和数据转运到从机中,层次之间的全量复制。但是再这里要注意中间即为下一个从机的主机又为从机的主.原创 2021-01-10 17:28:09 · 128 阅读 · 1 评论 -
Redis主从复制
概念:主从复制是指将一台Redis服务器上的数据复制到其他Redis服务器上。前者是主节点,后者是从节点。Master以写为主,Slave以读为主,因为大部分的操作都是读操作。这样实现了读写分离,减缓服务器压力。主从复制的作用1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式2.故障恢复 :主节点出现问题子节点可以提供服务,实现快速故障恢复。这是服务的冗余3.负载均衡:配合读写分离,主节点进行写服务,从节点进行读服务,以此来分担服务器负载,在写操作比较少读操作比较多的情景原创 2021-01-10 16:04:16 · 103 阅读 · 0 评论 -
Redis发布订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:命令测试订阅端:SUBSCRIBE qingfen #.原创 2021-01-10 13:26:34 · 88 阅读 · 0 评论 -
Redis持久化操作—RDB、AOF
RDB触发机制触发机制的条件?1.满足了save的条件,就会触发rdb规则2.执行了flushall命令3.退出redis会创建一个名为dump.rdb的备份文件在redis服务的同级目录中如何恢复rdb文件只需要将rdb文件存放在redis启动目录下即可,redis启动会自动检查dump.rdb恢复其中的数据 (dump.rdb默认在当前目录下,不需要去管)优缺点优点:1.适合大规模的数据恢复2.对数据完整性要求不高缺点:1.需要一定时间间隔操作2.会占原创 2021-01-09 22:02:13 · 128 阅读 · 0 评论 -
Redis配置文件详解
在启动Redis的时候,我们会通过Redis的配置文件来启动,所以分析Redis的配置文件来深化对Redis的了解。单位:配置文件在单位上是不敏感的。包含可以有多个配置,然后加入进去即可网络能够配置的信息还有… 具体看配置文件内容通用:GENERALdaemonize yes #守护进程开启,开启后台运行。默认为no,需要打开为yespidfile /var/run/redis_6379.pid #如果开启后台运行需要指定一个pid文件。#日志级别原创 2021-01-09 20:48:11 · 165 阅读 · 1 评论 -
SpringBoot整合Redis
添加相关依赖,在创建Springboot项目时添加。我们可以去看以下spring-boot-starter-data-redis的源码<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.or原创 2021-01-09 16:02:14 · 119 阅读 · 0 评论 -
Redis工具类—RedisUtil
package com.zz.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;import java.u原创 2021-01-09 15:55:48 · 139 阅读 · 0 评论 -
Jedis操作Redis及事务再理解
Jedis什么是Jedis?Jedis是Redis官方推荐的java连接开发工具。使用Java操作Redis中间件。我们在IDEA中进行测试:1.导入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </depen原创 2021-01-08 22:04:20 · 185 阅读 · 0 评论 -
了解Redis事务及Redis实现乐观锁
Redis事务Redis事务的本质是一组命令的集合,一个事务的所有命令都会被序列化,在事务执行过程中会按照顺序执行。Redis没有隔离级别的概念Redis单条命令保证原子性,但事务不保证原子性。所有的命令在事务中并没有直接被执行,而是发起执行命令后才会执行。Redis事务:开启事务(multi)命令入队执行事务(exec)127.0.0.1:6379> MULTI #开启事务OK#命令入队127.0.0.1:6379> set k1 v1QUEUED127原创 2021-01-08 20:41:59 · 110 阅读 · 0 评论 -
Redis的三种特殊数据类型—Hyperloglog基数统计、BitMap位图场景
Hyperloglog我们在传统的统计访问者的数量时,是通过set集合来存储用户的ID,set集合中储存的是无序,无重复的元素。以set中元素的数量来判断访问者的数量。但是这种方式需要保存大量的用户ID,而且会占用大量内存。所以我们采用Redis Hyperloglog数据结构来实现。Redis Hyperloglog数据结构的优点是:占用内存的固定2^64不同元素的基数,只需要消耗12KB内存。基数:元素中非重复数的个数。测试使用pfadd 创建元素pfcount: 统计元素基数数原创 2021-01-07 21:55:36 · 190 阅读 · 0 评论 -
Redis的三种特殊数据类型—geospatial地理空间详解
geospatial地理位置简称geo,可以用来做附近的人,定位打车距离计算等。geo可以推算出地理位置的信息,两地之间的距离等。geospatial相关命令:GEOADDGEODISTGEOHASHGEOPOSGEORADIUSGEORADIUSBYMEMBERgeoadd:添加地理位置 ,两极无法添加,一般会下载城市数据,通过Java程序一次性导入127.0.0.1:6379> geoadd china:city 121.49 31.22 shanghai原创 2021-01-07 17:26:36 · 338 阅读 · 0 评论 -
Redis的五大数据结构(2)——Set、Hash、Zset
3. Setmembers:查看set集合中的所有值ismember:判断set集合中是否有某值127.0.0.1:6379> sadd myset helo #set集合中添加元素(integer) 1127.0.0.1:6379> sadd myset world #set集合中添加元素(integer) 1127.0.0.1:6379> SMEMBERS myset #查看指定set集合的所有值1) "world"2) "helo"127.0.原创 2021-01-07 14:20:07 · 394 阅读 · 0 评论 -
Redis的五大数据结构(1)——String、List
Redis的五大数据结构StringListSetHashZset1.String字符串类型append key “…” ,当key不存在时,相当于会set一个key出来步长 i+=127.0.0.1:6379> set views 0 # 初始浏览量为0OK127.0.0.1:6379> get views"0"127.0.0.1:6379> incr views #自增1(integer) 1127.0.0.1:6379>原创 2021-01-07 10:43:47 · 80 阅读 · 0 评论 -
Redis基础知识认识及RedisKey的基本命令
Redis的基本认识切换数据库 —— 使用selectRedis默认有16个数据库127.0.0.1:6379> select 1 # 选择1号数据库OK127.0.0.1:6379[1]> DBSIZE # 因为没有存值,所以为0 数据库大小(integer) 0set为添加,get获取我们在使用删除命令时有两个删除命令FLUSHDB //删除当前所在数据库全部数据FLUSHALL // 删除所有数据库数据Redis是单线程的(面试会问到)原创 2021-01-04 18:57:35 · 149 阅读 · 1 评论 -
Redis性能测试
redis-benchmark的作用redis-benchmark存在与redis服务同级中用来做性能测试我们可以做一组测试100个并行连接 100000次请求分析数据:提取出一组进行分析:100000次请求在2.6s完成。共有100个并发客户端只有一台服务器来处理这些请求Redis的学习来源于狂神的B站视频讲解,相关笔记只是为了记录而成,而非它意。...原创 2021-01-04 16:41:28 · 128 阅读 · 0 评论 -
Redis在Windows和Linux环境下的安装 及 NoSqL的认识
NOSQL概述我们需要去了解问什么会有nosql的出现,因为在以前互联网还没有普及,网站的访问量还没有那么大,我们只需要简单的通过传统数据库就可以去应对,但是现在数据的访问存在着巨大的压力,我们需要去不断的去拓展,在数据访问达到一定层次的时候,我们开始买更多的服务器,我们可以发现在访问一个网站时,我们更多的是从数据库中读数据,有时会存在着大量的相同数据,这时我们要解决数据库的压力,我们就引入了一个缓存的东西,可以将读取的数据暂时的存放在缓存中,数据再次使用时可以直接拿出,减少了数据库的压力。...原创 2021-01-04 16:19:38 · 151 阅读 · 0 评论