redis
RB_VER
这个作者很懒,什么都没留下…
展开
-
redis缓存穿透和雪崩
redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时也带来一些问题,特别是数据一致性问题,从严格意义上讲,如果对数据一致性要求很高,那么就不能使用缓存。缓存穿透缓存穿透的概念就是,用户想要查询一个数据,发现redis内存中没有,也就是缓存没命中,于是向持久层数据库查询,发现也没有,于是本次查询失败。这个过程发生多次,会给数据库造成很大压力。解决方案:布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系原创 2022-04-25 11:23:02 · 802 阅读 · 1 评论 -
redis主从复制
概念主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。master以写为主,slave以读为主。默认情况下,每台redis服务器都是主节点;且一个主节点可以有多个从节点,但是一个从节点只能有一个主节点。主从复制的作用主要包括:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提原创 2022-04-22 16:55:32 · 556 阅读 · 0 评论 -
redis发布订阅
redis发布订阅(pub/sub)是一种消息通信模式:发布者发送消息,订阅者接收消息。redis客户端可以订阅任意数量的频道。下面展示了频道channel1,以及订阅这个频道的三个客户端之间的关系:当有新消息通过publish命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端:原理:redis通过publish、subscribe和psubscribe等命令实现发布和订阅功能。通过subscribe命令订阅某频道后,redis-server里维护了一个字典,字典的键原创 2022-04-22 16:16:50 · 1050 阅读 · 0 评论 -
redis持久化
redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以redis提供了持久化功能。RDB(redis database)在指定的时间间隔内,将内存中的数据快照写入磁盘中,也就是snapshot快照,它恢复时是将快照文件直接读到内存中。redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的原创 2022-04-22 10:44:04 · 93 阅读 · 0 评论 -
redis配置文件详解
redis.conf详解单位配置文件对大小写不敏感。包含可以将多个配置文件导入进来。网络# 绑定ipbind 127.0.0.1# 保护模式protected-mode yes# 端口设置port 6379 通用# 以守护进程的方式运行,默认是nodaemonize yes# 如果以后台方式运行,需要指定一个pid文件pidfile /var/run/redis_6379.pid# 日志级别loglevel notice# 日志的文件位置logfile原创 2022-04-21 17:30:15 · 155 阅读 · 0 评论 -
jedis的基本使用
jedis是使用java来操作redis的中间件。首先创建maven项目,导入jedis依赖。public static void main(String[] args) { // 1. 创建Jedis对象 Jedis jedis = new Jedis("127.0.0.1", 6379); // jedis所有方法就是redis的所有命令 // 测试链接 System.out.println(jedis.ping());}jedis的部分API示例://清空数据jedis.flu原创 2022-04-21 16:27:03 · 2429 阅读 · 0 评论 -
redis实现乐观锁
悲观锁:认为什么时候都会出问题,无论做什么都加锁,影响性能。乐观锁:认为什么时候都不会出问题,所以不上锁,更新的时候去判断数据是否被修改。redis实现:访问线程1# 0时刻set in 100# 1时刻set out 0# 2时刻watch in# 3时刻multi# 4 时刻decrby in 20# 5时刻incrby out 20# 6时刻exec.。。。# 10时刻set in 1000访问线程2:# 时刻7watch in# 时刻8decrb原创 2022-04-21 15:59:11 · 548 阅读 · 0 评论 -
redis事务的基本操作
redis事务的本质:一组命令集合。具有一次性、顺序性、排他性。一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行。redis单条命令是保证原子性的,但是事务不保证原子性。redis事务没有隔离级别的概念,所有命令在事务中不被执行,只有在发起执行命令的时候才会执行。redis的事务:开启事务命令入队执行事务# 执行事务multiset k1 v1set k2 v2exec# 放弃事务multiset k3 v3discard当事务中出现语法时,事务不原创 2022-04-21 15:38:46 · 392 阅读 · 0 评论 -
redis基础知识
redis默认有16个数据库,默认使用第0个,可以使用select命令切换。查看数据库大小使用命令dbsize清除当前数据库flushdb清除全部数据库内容flushallredis是单线程的,redis是基于内存操作,CPU不是redis的性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽。...原创 2022-04-20 15:20:33 · 205 阅读 · 0 评论 -
redis-benchmark性能测试
redis-benchmark是一个官方自带的性能测试工具。使用方式redis-benchmark 命令参数可选参数如下示例# 测试100个并发连接 10万请求redis-benchmark -h localhost -p 6379 -c 100 -n 100000测试过程输出测试所有命令。分析输出内容含义...原创 2022-04-20 11:29:35 · 534 阅读 · 0 评论 -
Redis概述
Redis(Remote Dictionary Server),即远程字典服务。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis能干什么?内存存储、持久化,内存是断电即失,持久化很重要(RDB、AOF)。效率高,可以用于高速缓存。发布订阅系统。地图信息分析。计时器、计数器。Redis特性多样的数据类型持久化集群事务...原创 2022-04-20 10:43:21 · 68 阅读 · 0 评论 -
NoSQL概述
为什么要用nosql网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以为了减轻数据库的压力,可以使用缓存来保证效率。nosql特点方便扩展(数据之间没有关系)大数据量,高性能(Redis1秒写8万次,读11万次)多数据类型,不需要事先设计数据库,随取随用RDBMS和NoSQL区别传统RDBMS:结构化组织SQL数据和关系都存在单独的表中DML,DDL严格一致性基础的事务NoSQL:不仅仅是数据没有固定的查询语言键值对存储,列存储,文档存储,图数据原创 2022-04-19 16:40:10 · 106 阅读 · 0 评论 -
基于docker搭建redis集群
准备工作下载redis源码包:mkdir /usr/local/redis_dockercd /usr/local/redis_dockerwget http://download.redis.io/releases/redis-4.0.1.tar.gz 解压:tar -xzf redis-4.0.1.tar.gz安装gccyum install -y gcc-c++编译make#如果报错,可以尝试:make MALLOC=libc配置redis.confvi /usr/l转载 2020-09-01 11:09:17 · 286 阅读 · 0 评论 -
基于docker配置redis的Sentinel模式
Sentinel(哨兵)是redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监控任意多个主服务器,以及这些主服务器属下的所有从服务器,并且在被监控的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。1. 首先需要搭建主从复制:参考基于docker配置redis的主从复制2. 挂载外部配置:创建目录和配置文件sentinel.conf。sentinel.conf:bin原创 2020-08-31 15:29:23 · 423 阅读 · 0 评论 -
基于docker配置redis的主从复制
1. 拉取docker镜像:docker pull redis2. 挂载外部配置:创建目录和配置文件redis.conf其中主redis的redis.conf:bind 0.0.0.0protected-mode no两个从redis的redis.conf:bind 0.0.0.0protected-mode noreplicaof 172.17.0.2 63793. 启动3个redis容器服务,分别使用到6379、6380、6381端口:docker run --name原创 2020-08-30 15:47:06 · 515 阅读 · 0 评论