![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
风叶翩翩
有过众多的项目开发经验。精通Java开发,Sql数据库等,熟练使用主流开发工具如IDEA等。对开发编程有着特殊的爱好和恒心。
展开
-
Redis服务秒启
日常开发中我们经常使用到redis服务,每次都要用命令行启动redis服务特别麻烦,今天就来教大家一种秒启Redis服务的方法。Redis服务秒启详细步骤1 . 找到我们的redis安装目录找到startup,双击。2 . 如下图所示,Redis服务已经启动,我们可以看到相关信息,如redis端口号等。...原创 2020-05-19 16:39:02 · 220 阅读 · 0 评论 -
Redis和数据库的结合
使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题。假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致。Redis 和数据库不一致在图中,T1 时刻以键 key1 保存数据到 Redis,T2 时刻刷新进入数据库,但是 T3 时刻发生了其他业务需要改变数据库同一条记录的数据,但是采用了 key2 保存到 Redis...原创 2020-03-22 10:35:02 · 878 阅读 · 0 评论 -
Spring整合Redis详解
用注解驱动的方式来使用 Redis。和数据库事务一样,Spring 提供了缓存的管理器和相关的注解来支持类似于 Redis 这样的键值对缓存。准备测试环境首先,定义一个简单的角色 POJO,代码如下所示。package com.pojo;import java.io.Serializable;public class Role implements Serializable { ...原创 2020-03-22 10:29:58 · 1128 阅读 · 0 评论 -
从RedisTemplate中获得Jedis实例
很多时候,我们也许需要使用一些更为高级的缓存服务器的 API,如 Redis 的流水线、事务和 Lua 语言等,所以也许会使用到 RedisTemplate 本身。首先,定义 RedisTemplateService 的接口,代码如下所示。package com.service;public interface RedisTemplateService { /** * 执...原创 2020-03-22 10:17:28 · 1248 阅读 · 0 评论 -
Redis悲观锁、乐观锁和调用Lua脚本的优缺点
悲观锁使用了数据库的锁机制,可以消除数据不一致性,对于开发者而言会十分简单,但是,使用悲观锁后,数据库的性能有所下降,因为大量的线程都会被阻塞,而且需要有大量的恢复过程,需要进一步改变算法以提高系统的并发能力。通过 CAS 原理和 ABA 问题的讨论,我们更加明确了乐观锁的原理,使用乐观锁有助于提高并发性能,但是由于版本号冲突,乐观锁导致多次请求服务失败的概率大大提高,而我们通过重入(按时间戳或...原创 2020-03-22 10:14:40 · 1489 阅读 · 0 评论 -
Redis内存回收策略
Redis 也会因为内存不足而产生错误,也可能因为回收过久而导致系统长期的停顿,因此掌握执行回收策略十分有必要。在 Redis 的配置文件中,当 Redis 的内存达到规定的最大值时,允许配置 6 种策略中的一种进行淘汰键值,并且将一些键值对进行回收,让我们来看看它们的特点。首先,Redis 的配置文件放在 Redis 的安装目录下,在 Windows 中是 redis.windows.conf...原创 2020-03-22 09:54:46 · 158 阅读 · 0 评论 -
Redis的两种备份方式:RDB和AOF
在 Redis 中存在两种方式的备份:一种是快照恢复(RDB),通过快照(snapshotting)实现的,它是备份当前瞬间 Redis 在内存中的数据记录。另一种是只追加文件(Append-Only File,AOF),其作用就是当 Redis 执行写命令后,在一定的条件下将执行过的写命令依次保存在 Redis 的文件中,将来就可以依次执行那些保存的命令恢复 Redis 的数据了。RDB备份...原创 2020-03-21 10:58:04 · 938 阅读 · 0 评论 -
Redis中使用Lua语言
在 Redis 的 2.6 以上版本中,除了可以使用命令外,还可以使用 Lua 语言操作 Redis。从前面的命令可以看出 Redis 命令的计算能力并不算很强大,而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。只是在 Redis 中,执行 Lua 语言是原子性的,也就说 Redis 执行 Lua 的时候是不会被中断的,具备原子性,这个特性有助于 Redis 对并发数据一致性的...原创 2020-03-21 10:44:47 · 299 阅读 · 0 评论 -
Redis流水线性能提高
我们希望在没有任何附加条件的场景下去使用队列批量执行一系列的命令,从而提高系统性能,这就是 Redis 的流水线(pipelined)技术。而现实中 Redis 执行读/写速度十分快,而系统的瓶颈往往是在网络通信中的延时,如图所示。在实际的操作中,往往会发生这样的场景,当命令 1 在时刻 T1 发送到 Redis 服务器后,服务器就很快执行完了命令 1,而命令 2 在 T2 时刻却没有通过网络...原创 2020-03-21 10:27:53 · 177 阅读 · 0 评论 -
Redis的超时命令和垃圾回收策略
正如 Java 虚拟机,它提供了自动 GC(垃圾回收)的功能,来保证 Java 程序使用过且不再使用的 Java 对象及时的从内存中释放掉,从而保证内存空间可用。当程序编写不当或考虑欠缺的时候(比如读入大文件),内存就可能存储不下运行所需要的数据,那么 Java 虚拟机就会抛出内存溢出的异常而导致服务失败。同样,Redis 也是基于内存而运行的数据集合,也存在着对内存垃圾的回收和管理的问题。R...原创 2020-03-21 10:19:49 · 645 阅读 · 0 评论 -
Redis发布订阅模式
使用银行卡消费的时候,银行往往会通过微信、短信或邮件通知用户这笔交易的信息,这便是一种发布订阅模式,这里的发布是交易信息的发布,订阅则是各个渠道。这在实际工作中十分常用,Redis 支持这样的一个模式。发布订阅模式首先需要消息源,也就是要有消息发布出来,比如例子中的银行通知。首先是银行的记账系统,收到了交易的命令,成功记账后,它就会把消息发送出来,这个时候,订阅者就可以收到这个消息进行处理了,观...原创 2020-03-21 10:09:29 · 144 阅读 · 0 评论 -
Redis事务回滚深入
对于 Redis 而言,不单单需要注意其事务处理的过程,其回滚的能力也和数据库不太一样,这也是需要特别注意的一个问题——Redis 事务遇到的命令格式正确而数据类型不符合,如图所示。从图中可知,我们将 key1 设置为字符串,而使用命令 incr 对其自增,但是命令只会进入事务队列,而没有被执行,所以它不会有任何的错误发生,而是等待 exec 命令的执行。当 exec 命令执行后,之前进入队...原创 2020-03-20 17:47:48 · 748 阅读 · 1 评论 -
Redis的基础事务
Redis 存在事务,尽管它没有数据库那么强大,但是它还是很有用的,尤其是在那些需要高并发的网站当中。使用 Redis 读/写数据要比数据库快得多,如果使用 Redis 事务在某种场合下去替代数据库事务,则可以在保证数据一致性的同时,大幅度提高数据读/写的响应速度。互联网和传统企业管理系统不一样,互联网系统面向的是公众,很多用户同时访问服务器的可能性很大,尤其在一些商品抢购、抢红包等场合,对性...原创 2020-03-20 17:42:47 · 101 阅读 · 0 评论 -
Redis HyperLogLog常用命令
基数并不是存储元素,存储元素消耗内存空间比较大,而是给某一个有重复元素的数据集合(一般是很大的数据集合)评估需要的空间单元数,所以它没有办法进行存储,加上在工作中用得不多,我们要介绍一下 Redis 的 HyperLogLog 命令。Redis 的 HyperLogLog 命令命令行演示。解说:首先往一个键为 h1 的 HyperLogLog 插入元素,让其计算基数,到了第 5 个命令“...原创 2020-03-20 17:36:02 · 566 阅读 · 0 评论 -
Redis有序集合详解
有序集合和集合类似,只是说它是有序的,和无序集合的主要区别在于每一个元素除了值之外,它还会多一个分数。分数是一个浮点数,在 Java 中是使用双精度表示的,根据分数,Redis 就可以支持对分数从小到大或者从大到小的排序。这里和无序集合一样,对于每一个元素都是唯一的,但是对于不同元素而言,它的分数可以一样。元素也是 String 数据类型,也是一种基于 hash 的存储结构。集合是通过哈希表实...原创 2020-03-20 17:32:19 · 1599 阅读 · 0 评论 -
Redis集合深入
Redis 的集合不是一个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来存储和查找数据,理论上一个集合可以存储 2 的 32 次方减 1 个节点(大约 42 亿)个元素,因为采用哈希表结构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1),只是我们需要注意 3 点。 对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候都会失败。 集合是无序的。...原创 2020-03-20 17:22:46 · 111 阅读 · 0 评论 -
Redis链表结构深入
链表结构是 Redis 中一个常用的结构,它可以存储多个字符串,而且它是有序的,能够存储 2 的 32 次方减 1 个节点(超过 40 亿个节点)。Redis 链表是双向的,因此即可以从左到右,也可以从右到左遍历它存储的节点,链表结构如下图所示。由于是双向链表,所以只能够从左到右,或者从右到左地访问和操作链表里面的数据节点。但是使用链表结构就意味着读性能的丧失,所以要在大量数据中找到一个节点...原创 2020-03-20 16:42:54 · 207 阅读 · 0 评论 -
Redis哈希数详解
Redis 中哈希结构就如同 Java 的 map 一样,一个对象里面有许多键值对,它是特别适合存储对象的,如果内存足够大,那么一个 Redis 的 hash 结构可以存储 2 的 32 次方减 1 个键值对(40 多亿)。一般而言,不会使用到那么大的一个键值对,所以我们认为 Redis 可以存储很多的键值对。在 Redis 中,hash 是一个 String 类型的 field 和 value...原创 2020-03-20 11:20:11 · 1214 阅读 · 0 评论 -
Redis字符串深入
字符串是 Redis 最基本的数据结构,它将以一个键和一个值存储于 Redis 内部,它犹如 Java 的 Map 结构,让 Redis 通过键去找到值。Redis 字符串的数据结构如下图所示。Redis 会通过 key 去找到对应的字符串,比如通过 key1 找到 value1,又如在 Java 互联网中,假设产品的编号为 0001,只要设置 key 为 product_0001,就可以通过...原创 2020-03-20 11:06:24 · 85 阅读 · 0 评论 -
NoSQL和传统数据库的区别
Redis 等 NoSQL 工具也能够存储数据,有人认为 NoSQL 来会取代数据库,但是我不那么认为,我们要理解 NoSQL 和传统数据库的差异。首先,NoSQL 的数据主要存储在内存中(部分可以持久化到磁盘),而数据库主要是磁盘。其次,NoSQL 数据结构比较简单,虽然能处理很多的问题,但是其功能毕竟是有限的,不如数据库的 SQL 语句强大,支持更为复杂的计算。再次,NoSQL 并不完全安...原创 2020-03-20 10:51:50 · 1432 阅读 · 1 评论 -
Redis的6种数据类型
Redis 是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为索引找到当前缓存的数据,并且返回给程序调用者。当前的 Redis 支持 6 种数据类型,它们分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)。使用 Redis 编程要熟悉这 6 种数据...原创 2020-03-20 10:27:02 · 477 阅读 · 0 评论 -
Spring操作Redis
在 Spring 中使用 Redis,除了需要 jedis.jar 外,还需要下载 spring-data-redis.jar,这里值得注意的是 jar 包和 Spring 版本兼容的问题,我使用的 jar 包版本是 1.8.1,而 Spring 的版本是 5.0.4,如果使用其他的版本可能存在不兼容的问题,从而产生异常。把下载的 jar 包导入到工程环境中,这样就可以在使用 Spring 提供...原创 2020-03-20 10:13:34 · 364 阅读 · 0 评论 -
Java操作Redis
我将详细为大家讲解如何在 Java 中使用 Redis。在 Java 中,可以简易地使用 Redis,或者通过 Spring 的 RedisTemplate 使用 Redis。在 Java 中使用 Redis 工具,要先下载 jedis.Jar 包,把它加载到工程的路径中,所以首先打开网站 http://mvnrepository.com/artifact/redis.clients/jedis...原创 2020-03-20 09:57:34 · 114 阅读 · 0 评论 -
Redis ops详解
Redis缓存数据库的ops问题我们使用Java操作Redis数据库的时候,往往会输出和ops相关的内容,下面给大家讲解一下ops相关的内容。ops是什么?redis中的OPS 即operation per second 每秒操作次数。意味着每秒对Redis的持久化操作。所以我们要知道使用Java对Redis数据库的相关操作输出和ops有关的内容是正确的。如下面对Redis数据库操作的输...原创 2020-03-20 09:50:08 · 6156 阅读 · 0 评论 -
Redis Spring集成
近来Spring可谓是火了一把,那麽我们应该进行Redis缓存和Spring集成的呢??下面我们将讲解Spring对Redis的支持即我们如何在Spring项目中访问Redis。项目如下redis.properties这里指定连接 Redis 服务器的相关信息#ip地址redis.hostName=127.0.0.1#端口号redis.port=6379#如果有密码redis....原创 2020-02-05 15:16:20 · 117 阅读 · 0 评论 -
Redis Jedis
相信大家有着同样的问题,Jedis是什么呢?下面为你详细解答关于Redis Jedis的内容。Jedis到底是什么?在常见命令中,使用各种Redis自带客户端的命令行方式访问Redis服务。 而在实际工作中却需要用到Java代码才能访问,使用第三方jar包 :Jedis就能方便地访问Redis的各种服务了。Jedis.jar架包下载地址点击跳转连接进行下载jedis.jarJedis应用...原创 2020-02-04 15:12:34 · 150 阅读 · 0 评论 -
Redis 常见命令
Redis一共有5种数据类型 : String(字符串) List(列表)Hash(字典)Set(集合)Sorted Set(有序集合)不同的数据类型,有不同的命令方式,我们会写出不同的数据类型的常用命令:1.String 字符串常用的String命令行set baidu http://www.baiduappend baidu.comget baiduset visitors...原创 2019-12-28 20:41:13 · 96 阅读 · 0 评论 -
Redis 安装与配置
Redis 安装与配置Window 下安装下载地址:https://github.com/MSOpenTech/redis/releases。这里我们下载 Redis-x64-xxx.zip解压到指定目录: 打开命令行(cmd)跳转至解压路径,并运行安装命令,结果如图C:\Users\qizhuang>d:D:\>cd javaD:\java>...原创 2019-12-28 11:04:57 · 120 阅读 · 0 评论 -
redis 高级实用教程
一、设置redis外网访问更改redis.conf 文件# vim redis.confbind 127.0.0.1 # 注释掉改行protected-mode yes # 更改模式为no(redis3.2后)二、设置密码验证更改redis.conf配置文件requirepass redhat或者通过set设置127.0.0.1:6284> config ge...原创 2019-12-28 10:25:26 · 247 阅读 · 0 评论 -
Redis DeskTop Manager 使用教程
redis desktop manager windows 是一款能够跨平台使用的开源性redis可视化工具。redis desktop manager主要针对redis开发设计,拥有直观强大的可视化界面,具有完善全面的数据操作功能,可以针对目标key执行rename,delete,addrow,reload value操作,支持通过SSH Tunnel连接,用户可以通过它对Redis进行操作管...原创 2019-12-17 17:18:20 · 3481 阅读 · 0 评论 -
Redis数据库的连接
对于Redis缓存数据库的连接要有两大步,一是启动我们的Redis服务,只有Redis服务启动了我们才能对它进行连接等相关操作,二就是Redis数据库的连接了。首先,确保我们电脑上已经安装好了Redis数据库。一 . 启动Redis服务1.在我的电脑右击选择管理点击进入2.找到服务和应用程序并点击进入3.选择服务点击进入,下滑找到Redis如下图所示4.点击左边紫色启动两字,此时Re...原创 2019-12-12 16:47:12 · 4307 阅读 · 0 评论 -
cmd中Redis的启动
对于Redis缓存数据库来说,是使用命令行来进行有关操作的,那么我们如何使用命令行来打开Redis数据库呢???1.在windows电脑上按windows+R,然后输入cmd打开命令行2.根据我们安装Redis的路径切换到对应的盘中3.找到我们的安装位置并复制路径4.在已经装换到安装Redis盘里的命令窗口输入cd,然后空格把Redis安装路径黏贴上去5.在后面输入redis-s...原创 2019-12-12 15:00:18 · 5248 阅读 · 0 评论