Redis
文章平均质量分 87
Redis介绍、基础、进阶和实战
ssy03092919
看这时光如白驹过隙,忽然而矣!
然此身乃草芥,唯有心坚,方主沉浮!
展开
-
Redis(十六):SpringBoot整合Redis
版本springboot:2.2.6.RELEASEredis:3.0jedis:3.2.0junit:4.12项目github地址:传送门代码pom文件:<?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:sc原创 2021-07-08 22:38:31 · 345 阅读 · 1 评论 -
Redis(十五):进阶篇 - 集群
集群(Cluster) 集群的特点在于拥有和单机实例同样的性能,同时在网络分区后能够提供一定的可访问性以及对主数据库故障恢复的支持。另外集群支持几乎所有的单机实例支持的命令,对于涉及多键的命令(如MGET),如果每个键都位于同一节点中,则可以正常支持,否则会提示错误。除此之外集群还有一个限制是只能使用默认的0号数据库,如果执行 SELECT 切换数据库则会提示错误。1、配置集群 使用集群,只需要将每个数据库节点的 cluster-enabled 配置选项打开即可。每个集群中至少需要3个主数据库才能原创 2021-07-04 16:37:46 · 237 阅读 · 3 评论 -
Redis(十四):进阶篇 - 哨兵
哨兵 在Reids的复制一文以介绍已经介绍了复制的原理和使用方式,在一个典型的一主多从的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用。当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续提供服务。然而整个过程相对麻烦且需要人工介入,难以实现自动化。 为此,Redis2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。1、什么是哨兵 顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个原创 2021-07-02 23:36:57 · 273 阅读 · 1 评论 -
Redis(十三):进阶篇 - 复制
复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同在服务器上,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。为此,Redis提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。1、配置 在复制的概念中,数据库分为两类,一类是主数据库原创 2021-07-01 22:24:11 · 487 阅读 · 0 评论 -
Redis(十二):进阶篇 - 持久化
前言 Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,然而当Redis重启后,所有存储在内存中的数据就会丢失。在一些情况下,我们会希望Redis在重启后能保证数据不丢失,例如:将Redis作为数据库使用时;将Reids作为缓存服务器。这时我们希望Reids能将数据从内存中以某种形式同步到硬盘中,使得重启后可以根据硬盘中的记录恢复数据,这一过程就是持久化。 Redis支持两种方式的持久化,一种 RDB 方式,另一种是 AOF 方式。前者会根据指定的规则“定时”将内存中的数据原创 2021-06-30 23:43:29 · 255 阅读 · 3 评论 -
Redis(十一):进阶篇 - 消息通知(任务队列、发布/订阅)
任务队列 在一个私人博客网站中,粉丝关注博主需要添加自己的邮箱,以便接收邮件确认信息和通知信息;博主每发布一篇新文章时,需要向他的粉丝们同步发送邮件通知; 诸如,当页面需要进行如发送邮件、复杂数据运算等耗时较长的操作是会阻塞页面的渲染。为了避免用户等待太久,应该使用独立的线程来完成这类操作。不过一些编程语言或框架不易实现多线程,这时可以通过其他进程来实现。设想有一个进程能够完成发邮件的功能,那么在页面中只需要想办法通知这个进程向指定的地址发送邮件就可以了。 这个通知的过程可以借助任务队列来实现。原创 2021-06-29 23:51:22 · 2730 阅读 · 2 评论 -
Redis(十):进阶篇 - 排序SORT
排序1、有序集合的集合操作 集合类型提供了强大的集合操作命令,但是如果需要排序就要用到有序集合类型。Redis的作者在设计Redis的命令时考虑到了不同数据类型的使用场景,对于不常用到的或者在不损失过多性能的前提下可以使用现有命令来实现的功能,Redis就不会单独提供命令来实现。这一原则使得Redis在拥有强大功能的同时保持着相对精简的命令。 有序集合常见的使用场景是大数据排序,如游戏的玩家排行榜,所以很少会需要获得键中的全部数据。同样Redis认为开发者在做完交集、并集运算后不需要直接获得全部结原创 2021-06-28 22:14:11 · 1699 阅读 · 1 评论 -
Redis(九):进阶篇 - 过期时间
过期时间1、命令介绍 EXPIRE命令的使用方法为EXPIRE key seconds seconds参数表示键的过期时间,单位是秒。如设置key键的过期时间为20秒,即20秒后,key键自动被删除:127.0.0.1:6379> get key"333"127.0.0.1:6379> expire key 20(integer) 120秒后在设置过期时间127.0.0.1:6379> expire key 20(integer) 0127.0.0.1:637原创 2021-06-27 15:19:50 · 1416 阅读 · 0 评论 -
Redis(八):进阶篇 - 事务
事务(Transaction)1、概述 Redis中的事务是一组命令的集合。事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。例如,银行转账过程中A给B汇款,首先系统从A的账户中将钱划走,然后向B的账户增加相应的金额。这两个步骤必须属于同一个事务,要么全执行,要么全不执行。否则只执行第一步,钱就凭空消失了,这显然让人无法接受。 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令,如:127.0.0.1:6379> mult原创 2021-06-27 13:51:40 · 170 阅读 · 0 评论 -
Redis(七):基础篇 - 有序集合类型
有序集合类型(Sorted Set) 有序集合类型与上一篇的集合类型的区别就是“有序”二字。 在集合类型的基础上有序集合为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但它们的分数却可以相同。 有序集合类型在某些方面和列表类型有些相似: (1)二者都是有序的。 (2)二者都可以获得某一范围的元素。 但是二者有着很大原创 2021-06-26 22:28:38 · 278 阅读 · 1 评论 -
Redis(六):基础篇 - 集合类型
集合类型(Set) 在集合中每个元素都是不同的,且没有顺序;一个集合类型键可以存储至多2³² - 1个字符串。集合类型和列表类型对比特性集合类型列表类型存储内容至多 2³²- 1个字符串至多 2³² - 1个字符串有序性否是唯一性是否 集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是O(1)。多个集合类型键指尖还可以进行原创 2021-06-26 15:43:18 · 442 阅读 · 0 评论 -
Redis(五):基础篇 - 列表类型
列表类型(List) Redis lists基于Linked Lists实现。这意味着即使在一个list中有数百万个元素,在头部或尾部添加一个元素的操作,其时间复杂度也是常数级别的。用LPUSH 命令在十个元素的list头部添加新元素,和在千万元素list头部添加新元素的速度相同。 那么,坏消息是什么?在数组实现的list中利用索引访问元素的速度极快,而同样的操作在linked list实现的list上没有那么快。 Redis Lists用linked list实现的原因是:对于数据库系统来说,原创 2021-06-25 23:21:50 · 300 阅读 · 0 评论 -
Redis(四):基础篇 - 散列类型
散列类型(Hash) 散列类型的键值是一种字典结构,其存储了字段(field)和字段值得映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32 -1个子弹。提示 除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套。比如集合类型的每个元素都只能是字符串,不能是另一个集合或散列表等。 散列类型是和存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。命令1、赋值与取值HSET key原创 2021-06-24 23:52:30 · 353 阅读 · 1 评论 -
Redis(三):基础篇 - 字符串类型
热身 先来几个比较基础的命令热身一下,打开redis-cli后,开始体验1、获得符合规则的键名列表KEYS patternpattern支持glob风格通配符格式,如下表:符号含义?匹配一个字符*匹配任意个(包括0个)字符[]匹配括号间的任一字符,可以使用“-”符号表示一个范围,如a[b-d]可以匹配“ab”、“ac”和“ad”\x匹配字符x,用于转移符号。如要匹配“?”,就需要使用?127.0.0.1:6379> keys *1)原创 2021-06-23 23:56:48 · 296 阅读 · 1 评论 -
Redis(二):初始篇-Linux安装Redis
“纸上得来终觉浅,绝知此事要躬行” --陆游《冬夜读书示子聿》版本规则 Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.8版,3.0版),奇数版本是非稳定版(如2.7版,2.9版),生产环境下一般需要使用稳定版本。 一、安装环境Redis是C语言编写的,所以在编译前要安装编译环境gcc[root@VM-0-17-centos ~]# yum install -y gccLoaded plugins: fastestmirror, lang.原创 2021-06-22 23:04:46 · 217 阅读 · 2 评论 -
Redis(一):初始篇-认识Redis
一、简介 Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求。1.1 历史与发展 2008年,意大利的一家创业公司Merzia推出了一款基于M有SQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人Salvatore Sanfilippo便开始对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并与2009年开发完成,这个数据库就是Redis。不过Salvatore Sanfilippo并不满足只原创 2021-06-21 23:44:46 · 231 阅读 · 0 评论