Redis
文章平均质量分 94
Redis 实战系列文章
冯佳兴
一名非常热爱计算机的 Boy,技术是一门哲学,愿意和我一起研究新的技术吗?
本人坚持自主学习,站在巨人肩膀上学习,善于分享。
我会经常分享系列基础博客,希望大家喜欢,有什么问题记得关注留言哦!
展开
-
Centos 7 搭建 Redis 单节点集群
Redis是C语言开发,安装Redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc yum -y install gcc automake autoconf libtool make 解压、编译、安装tar -zxvf redis-5.0.0.tar.gzcd redis-5.0.0make && make install新建文件夹redis_clustermkdir redis_clustercd redis_clusterm原创 2020-11-18 13:53:00 · 325 阅读 · 1 评论 -
【Redis】17. Redis 常用工具类
package com.fjx.prize.commons.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;原创 2020-08-17 18:26:05 · 222 阅读 · 0 评论 -
【Redis】16. HyperLogLog — 亿级别的基数统计
场景老板让你统计一下网站的PV(浏览量,用户访问一次自增一次)和UV((独立访客,每个用户每天只记录一次)。PV 可以很好解决,我们可以使用redis 计数器,当天日期为key,每收到一个请求,INCRBY 就自增加一,最后结果就是浏览量了。UV,一个用户每天访问多次,但只能记录一次,是不是可以用缓存的 SET 集合,SET 可以去重,但是问题来了,随着访问量的增加,如果用 SET 集合,这是相当浪费内存的,不仅如此,如果对set集合聚合统计,实现也很复杂。使用位图,位图是以bit 为存储单位,是i原创 2020-05-28 10:41:37 · 580 阅读 · 0 评论 -
【Redis】15. 布隆过滤器(Bloom Filter) — 亿级别的过滤器
问题在 缓存穿透 一文中我们讲到了可以使用布隆过滤器可以解决缓存穿透问题。例如查询一个用户ID,它是如何快速查询,它又不是数组,又是怎么提高随机访问特性的查询效率的呢?我们平时刷短视频(抖音,快手等)是如何做到刷到的视频是不重复的呢?如果把用户刷到的信息都存放在数据库中,抖音八亿用户,每次都要进行 exists 判断该视频是否被看过,滑动一下就需要去库中查看,磁盘是远远跟不上性能的。如果用缓存,缓存容量有限,且需要对浏览的记录设置永不过期,这么多用户,用内存存记录,成本的?哪个企业会这么做?什么是布原创 2020-05-28 09:50:50 · 719 阅读 · 0 评论 -
【Redis】14. 跳跃表(SkipList) — 为什么 Redis 使用跳跃表来实现有序集合(Sorted Set)而不是红黑树或者平衡二叉树呢?
Redis 的有序集合(Sorted Set)就是用跳表来实现的。跳跃表是一种随机化的数据结构。我们可以把他看做 Java 中 SortedSet 和HashMap 的结合体,set 保证了value 值就有唯一性,且可以保证每一个value 有一个自己的权重值 socre ,用socre 达到排序的目的。一个单链表的结构无论是不是有序的,遍历都是从头到尾进行遍历,有的人说了,用二分法,二分法是针对数组进行查找的一种方法,而链表不可以,链表逻辑上是连续的,物理存储上是不连续的。数组不支持随机的插入和删除,原创 2020-05-27 18:55:17 · 867 阅读 · 0 评论 -
【Redis】13. Redis 为什么选择单线程,而 redis 4.0 之后部分命令开始使用多线程。
Redis 为什么使用单线程?因为 Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是 机器内存的大小 或者 网络带宽。既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章地采用单线程的方案了。----官方解释。Redis 真正的瓶颈问题并不是CPU ,而是内存,以及网络传输各种延迟。使用单线程带来的好处?使用单线程模型能带来更好的 可维护性,方便开发和调试;(相对于多线而言,程序执行顺序具有却行性,没有任何诡异的bug)使用单线程模型也能 并发原创 2020-05-27 11:59:39 · 694 阅读 · 0 评论 -
【redis】12. 缓存和数据库双写一致性问题
上一篇我们在 缓存雪崩,穿透,击穿中讲到了为什么使用缓存,以及使用缓存可能会遇到哪些问题?其中就有缓存和数据库双写一致性问题。那什么是缓存和数据库双写一致性问题呢?是什么导致了一致性的问题呢?什么是缓存和数据库双写一致性问题?数据库中的数据和缓存中的数据不一致如果我们只是读操作,肯定不会存在缓存和数据库双写一致性问题。但是如果更新或者删除操作呢?是什么导致了数据库和缓存双写一致性问题?我们知道执行一个更新操作花费的时间远远大于一个读操作花费的时间。更新操作,我们是先更新数据库呢还是先更新缓存呢?原创 2020-05-27 11:25:27 · 288 阅读 · 0 评论 -
【Redis】8. 你了解缓存雪崩,缓存穿透,缓存击穿么?它们用共性么?
什么是缓存雪崩,缓存击穿,缓存穿透呢?原创 2020-05-27 09:40:41 · 255 阅读 · 0 评论 -
【Redis】11. pipeline 流水线
上一节我们 redis 执行命令的生命周期大概为:发送命令 (客户端发送)排队 (服务端排队)执行命令 (服务端执行)返回结果 (服务端返回)我们知道服务端每秒可执行上万条命令,执行一条命命令是微妙级别的,客户端发送一条命令,需要在网络中进行传输,网络是不稳定的,这个传输时间是很长的,可见网络传输对redis 的性能是有一定影响的。n 条命令所花费的时间为: n 次网络传输时间 + n次服务器处理时间pipeline(流水线):客户端批量发送命令,此时处理n 条命令所花费的原创 2020-05-26 19:19:41 · 277 阅读 · 0 评论 -
【Redis】10. 慢查询
redis 运行生命周期发送命令排队 (单线程,所以要排队)执行命令 (不同的命令,执行时间不同。有的执行时间长,影响整体性能)返回结果慢查询慢查询发生在执行命令阶段(第三阶段),当发现某redis命令执行时间过长,就会记录该命令到慢查询日志当中。使用者可以更好地监视和找出在业务中一些慢redis操作,找到更好的优化方法。慢查询设置最大超时时间,慢查询的阈值(单位:微妙)CONFIG SET slowlog-log-slower-than num设置超过多少微秒的查询原创 2020-05-26 17:00:18 · 311 阅读 · 0 评论 -
【Redis】0. 关系型数据库和非关系型数据库入门篇
什么是关系型数据库关系型数据库是依据关系模型来创建的数据库。所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。什么是非关系型数据库NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.原创 2020-05-26 16:35:09 · 337 阅读 · 0 评论 -
【Redis】7. SpringBoot 整合 lettuce
新建 maven 项目导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.原创 2020-05-23 14:51:04 · 655 阅读 · 1 评论 -
【Redis】6. SpringBoot 整合 jedis
常用的redis客户端介绍以及对比Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址:https://redisson.org/redisson git项目地址:https://github.com/redisson/redissonlettu...原创 2020-01-21 21:14:03 · 363 阅读 · 0 评论 -
【Redis】04. 五种基本数据结构类型
redis的数据类型key,value格式的数据,其中key都是字符串,value有5种不同的数据结构,如下所示1) 字符串类型 string2) 哈希类型 hash : map格式 3) 列表类型 list : linkedlist格式。支持重复元素4) 集合类型 set : 不允许重复元素5) 有序集合类型 set:不允许重复元素,且元素有顺序String类型strin...原创 2020-01-21 21:05:07 · 532 阅读 · 0 评论 -
【Redis 】发布订阅(pub/sub)
Redis 发布订阅(pub/sub)一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:实例以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 CCTV:redi...原创 2020-01-21 21:01:58 · 1580 阅读 · 0 评论 -
【Redis 】5. 持久化
数据存放在内存中,redis宕机后,数据会不会消失 什么是Redis持久化———将内存数据保存到硬盘。 Redis 持久化存储 (AOF 与 RDB 两种模式)RDB(Redis DataBase)持久化RDB 是以二进制文件,是在某个时间点将数据写入一个临时文件(不是实时存储),持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。优点:使用单独子进程来进行持久化,主...原创 2020-01-21 20:58:19 · 191 阅读 · 0 评论 -
【Redis】事务
redis中有事务么?——有redis中的多数据库redis数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。修改配置文件控制数据库的总数database 16 //(0到15)数据库的切换select 数据库 // select 1移动数据(将当前的key移动到另一个库)move key名称 数据库数据库清空flushd...原创 2020-01-21 20:50:38 · 188 阅读 · 0 评论 -
【Redis】 9. 高可用(主从复制—哨兵机制)
什么是主从复制?(读写分离、备份、高可用、宕机容错机制、集群) 哨兵机制—高可用、监听的作用 redis持久化机制(数据恢复 rdb存储和aof的优缺点) redis 中的事务 发布订阅 缓存雪崩、击穿。Redis如何实现主从复制——修改配置文件概述1.redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以...原创 2020-01-21 20:41:49 · 219 阅读 · 0 评论 -
【Redis】 3. 常用命令
Redis命令Redis 命令用于在 redis 服务上执行操作。要在 redis 服务上执行命令需要一个 redis客户端。参考资料http://redisdoc.com/http://redis.io/commands连接操作相关的命令ping:测试连接是否存活如果正常会返回 pongecho:打印select:切换到指定的数据库,数据库索引号 index 用数字值指定,...原创 2020-01-21 20:34:41 · 151 阅读 · 0 评论 -
【Redis】2. 入门篇
了解java的内置缓存 什么是redis? --nosql数据缓存数据库 什么是nosql数据库? 为什么用redis?–减去数据的访问的压力,查询内存比查询数据库效率高 redis应用场景?-- token生成、session共享、分布式锁,自增id,验证码 哨兵机制 主从复制 读写分离 如何做集群 java缓存解析1.1简介Redis 是完全开源免费的,遵守BSD协...原创 2020-01-21 20:31:59 · 295 阅读 · 0 评论 -
【Redis】1. 单体搭建
目录环境配置解压、编译、安装修改配置文件设置开机自启的时候,注意CONF的路径,写自己安装的路径下的配置文件设置权限启动测试设置开机自启客户端访问redis配置文件介绍环境配置Redis是C语言开发,安装Redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gccyum -y install gcc automa...原创 2019-12-26 15:46:33 · 285 阅读 · 3 评论