![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
OVO_LQ_Start
一个弱小的菜鸟在瑟瑟发抖
展开
-
redis(23) 缓存穿透与缓存雪崩
缓存穿透1.概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。2、原创 2020-11-05 16:27:40 · 92 阅读 · 0 评论 -
Redis(22)哨兵模式
哨兵模式Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障原创 2020-11-05 15:08:57 · 107 阅读 · 0 评论 -
Redis(21)主从复制
主从复制在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。这个系统的运行依靠三个主要的机制:当一个 master 实例和一个 slave 实例连接正常时, master 会发原创 2020-11-04 17:18:25 · 220 阅读 · 1 评论 -
Redis(20)订阅发布
订阅发布Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:测试开启两个客户端。订阅者订阅一个频道[root@liuqing原创 2020-11-04 16:12:13 · 105 阅读 · 0 评论 -
Redis(19) redis AOF持久化
AOF(append only file)Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作配置详情1 redis 默认关闭,开启需要手动把no改为yesappendonly yes2 指定本地数据库文件名,默认值为 appendonly.aofappendfilename "appendonly.aof"3 指定更新日志条件(触发原创 2020-11-04 15:36:52 · 110 阅读 · 0 评论 -
Redis(18)RBD持久化
RBD 持久化详解1、RDB 简介2、触发方式①、配置详解②触发方式3、恢复数据4、停止 RDB 持久化5、RDB 的优势和劣势6、RDB 自动保存的原理图1、RDB 简介由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。原创 2020-11-04 11:52:39 · 358 阅读 · 0 评论 -
Redis(17)自定义RedisTemplate 实现自定义序列化
RidesTemplateRestTemplate默认是用的jdk序列化,会导致乱码问题,解决方式,自定义序列化即可自定义RidesTemplate配置类编写redistemplate配置类,实现自定义序列化@Configurationpublic class RedisConfig { @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(Redi原创 2020-11-03 11:25:59 · 851 阅读 · 0 评论 -
Redis(16) SpringBoot 整合redis
整合redis1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.配置文件:主要配置信息可以看RedisPropertiesspring.redis.host=主机ip #默认是localho原创 2020-11-03 00:28:38 · 112 阅读 · 0 评论 -
Redis(15) jedis
jedisJedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码使用方式。1.导入依赖 <!--导入jedis的包--> <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <原创 2020-11-02 23:50:20 · 207 阅读 · 0 评论 -
Reddis(14)事务
事务事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。注意...原创 2020-11-02 22:37:16 · 235 阅读 · 0 评论 -
Redis(13)三大特殊类型之Bitmaps(位存储)
BitmapsBitmaps是一种数据结构,来操作二进制的位来记录,只有 0 或 1两种状态可以用来统计用户的状态,比如登录状态,打卡状态。三种操作方式:1.添加 取值 统计127.0.0.1:6379> setbit sign 0 0 #添加(integer) 0127.0.0.1:6379> setbit sign 1 0(integer) 0127.0.0.1:6379> setbit sign 2 1(integer) 0127.0.0.1:6379>原创 2020-11-02 20:02:33 · 114 阅读 · 0 评论 -
Redis(12)三大特殊数据类型之 hyperloglogs(基数统计)
Hyperloglogs1.什么是基数集合中不重复元素的个数:A{ a, b ,c ,d ,e c } 集合基数为5.2.什么是Hyperloglogs是一种概率数据结构,用于统计唯一的事物(从技术上讲,这是指估计集合的基数。算法是用内存换取精度的:一个标准误差作为结束的估计值,误差小于1%。最多内存不会超过12k bytes3.统计元素与添加值:pfcount 与 pfadd127.0.0.1:6379> pfadd mykey a b c d e f g i j k(inte原创 2020-11-02 19:45:12 · 267 阅读 · 0 评论 -
Redis(11)三大特殊数据类型之地理空间(geospatial)
Geospatital1.添加地理位置:geoadd将指定的地理空间位置(经度,纬度、名称)添加到指定的key中。有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度geoadd chan:city 116.40 39.30 bejing(integer) 1127.0.0.1:6379> geoadd chan:city 121.47 31.23 shanghai(integer) 1127.0.0.1:6379> geoad原创 2020-11-02 17:55:18 · 233 阅读 · 0 评论 -
Redis(10)五大数据类型之Zset集合
ZSet集合Zset 集合与set集合相似,Zset只是加了一个标识,让其变成一个有序的集合。1.添加值与遍历值:zadd 与 zrange127.0.0.1:6379> zadd myset 1 one 2 two 3 three(integer) 3127.0.0.1:6379> zrange myset 0 -11) "one"2) "two"3) "three"2.升序 与降序 :zrangebyscore 与zrevrange127.0.0.1:6379>原创 2020-10-31 18:46:55 · 113 阅读 · 0 评论 -
Redis(9)五大数据类型之hash集合
hash集合hash类似于map集合。存在键值对。1.存值于取值:hset 于hget127.0.0.1:6379> hset myhash f1 liuqing #设置一个hash集合为myhash 其中key为f1 值为liuqing(integer) 1127.0.0.1:6379> hset myhash f2 love(integer) 1127.0.0.1:6379> hget myhash f1 #获取hash集合key为f1的值"liuqing"2.多原创 2020-10-31 12:45:57 · 150 阅读 · 0 评论 -
Redis(8)五大数据类型之set集合
set集合set集合中的元素是无序不重复的。1.添加set元素与查看set元素:sadd 与smembers127.0.0.1:6379> sadd myset liuqing love you(integer) 3127.0.0.1:6379> smembers myset1) "you"2) "love"3) "liuqing"2.寻找指定的值与查看set集合长度:sismember 与 scard127.0.0.1:6379> sismember myset原创 2020-10-31 12:12:18 · 175 阅读 · 1 评论 -
Reids(7)redis五大数据类型之list 列表
list 列表1.存值:Lpush127.0.0.1:6379> Lpush list one # list 表示key one表示值(integer) 1127.0.0.1:6379> Lpush list tow(integer) 2127.0.0.1:6379> Lpush list three(integer) 3127.0.0.1:6379> keys * #list key 里面存值了三个值1) "list"2.查看值:Lrange127.0.0原创 2020-10-30 16:07:24 · 122 阅读 · 0 评论 -
Redis(6)五大数据类型之String类型
String类型1.追加字符串与获取字符串长度:append 与 strlen127.0.0.1:6379> set name liuqing127.0.0.1:6379> append name "hello" #如果字符存在,就追加(integer) 12127.0.0.1:6379> strlen name(integer) 12127.0.0.1:6379> get name"liuqinghello"127.0.0.1:6379> append ke原创 2020-10-30 15:02:08 · 136 阅读 · 0 评论 -
Redis(5)Redis基本操作指令
RedisRedis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU ev原创 2020-10-30 13:49:08 · 215 阅读 · 0 评论 -
Redis(4) 基本操作和单线程还快的原因
基本操作1.Redis有16个数据库 ,默认使用第0个,查看配置文件即可发现:database 162.切换数据库:select index index:数字,表示第几个数据库。3.查看数据库数据条数:DBSIZE4.查看数据库全部key值:keys *5.清除当前数据库:flushdb6.清除所有数据库:flushall单线程原因1.为什么redis快?采用了多路复用io阻塞机制数据结构简单,操作节省时间运行在内存中,自然速度快2.为什么使用单线程?因为Redis的瓶颈不是原创 2020-10-30 01:28:00 · 80 阅读 · 0 评论 -
Redis(3)redis的性能测试
性能测试1.redis-benchmark redis自带的进行性能测试工具2.redis 性能测试工具可选参数如下所示:序号选项描述默认值1-h指定服务器主机名127.0.0.12-p指定服务器端口63793-s指定服务器 socket4-c指定并发连接数505-n指定请求数100006-d以字节的形式指定SET/GET 值的数据大小7-k1=keep alive 0=reconnect18原创 2020-10-30 00:45:40 · 177 阅读 · 0 评论 -
Redis(2)Linux下安装redis
安装Redis1.下载压缩包,官网2.使用Xftp上传到/home/liuqing 目录下(我的安装包一般都时放在这个路径下)3.将程序解压到当前文件夹 tar -zxvf redis-5.0.7.tar.gz4.解压后的redis文件移动到/opt (程序)目录下:mv redis-5.0.7 /opt ,redis-5.0.7目录下会有一份配置文件redis.conf 。[root@liuqing bin]# cd /opt/redis-5.0.7[root@liuqing redis-5原创 2020-10-30 00:12:27 · 107 阅读 · 0 评论 -
Redis(1)NoSql的发展历程与介绍以及redis
NoSql发展历程1.单机MySQL那个时候的网站大多数是静态页面,而且访问量比较少,服务器没有太大的压力,一台单机Mysql就可以解决问题。用户变多就会导致出现一下问题:数据量的过大时,一个机器放不下。数据库的索引(B+Tree)也占据大量磁盘空间。访问量(读写混合),一个实例承受不了2.Memcached(缓存)+MySQL+垂直拆Memcached:作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能缓存服务,在Memcached服务器上,又发展了根据hash原创 2020-10-29 18:14:58 · 415 阅读 · 1 评论