redis
文章平均质量分 79
redis
water___Wang
不断学习
展开
-
Redis系列汇总
Redis 汇总Redis(1): SQL or NoSqlredis(2):redis简介redis(3):安装redis(4):数据结构-String字符串redis(5):数据结构-Hash散列类型redis(6):数据结构-List列表类型redis(8):数据结构-zset有序集合类型redis(7):数据结构-set集合类型redis(9):Redis 5种数据类型vs java类型redis(10):redis五种数据结构应用场景redis(11):事务redis(.原创 2021-03-13 17:04:01 · 12528 阅读 · 44 评论 -
Redis(1): SQL or NoSql
开始Redis之旅~~~一、前言你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼?你是否在各种NoSql间纠结不定,到底该选用那种最好?作为互联网从业人员,我们要知道关系型数据库(MySql、Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要。1、结构化数据、非结构化数据与半结构化数据结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个.转载 2021-01-31 23:12:22 · 11025 阅读 · 9 评论 -
redis(2):redis简介
Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据 类型来适应不同场景下的缓存与存储需求。同时 Redis 的诸多高层级功能使其可以胜任消息 队列、任务队列等不同的角色。 本章将分别介绍Redis的历史和特性,以使读者能够快速地对Redis有一个全面的了解。一、历史与发展 2008年意大利的一家创业公司Merzia[1] 推出了一款基于MySQL的网站实时统计系统 LLOOGG[2] ,然而没过多久该公司的创始人Salvatore Sanfilippo 便开始对MyS.原创 2021-02-02 00:01:58 · 21076 阅读 · 16 评论 -
redis(3):安装
一、安装二、启动和停止三、命令行客户端四、配置五、多数据库原创 2021-02-02 23:18:28 · 10959 阅读 · 6 评论 -
redis(4):数据结构-String字符串
一、热身二、字符串类型三、散列类型四、列表类型五、集合类型六、有序集合类型原创 2021-02-03 23:04:35 · 11276 阅读 · 4 评论 -
redis(5):数据结构-Hash散列类型
一、介绍哈希等价于Java语言的HashMap或者是Python语言的dict,在实现结构上它使用二维结构,第一维是数组,第二维是链表,hash的内容key和value存放在链表中,数组里存放的是链表的头指针。通过key查找元素时,先计算key的hashcode,然后用hashcode对数组的长度进行取模定位到链表的表头,再对链表进行遍历获取到相应的value值,链表的作用就是用来将产生了「hash碰撞」的元素串起来。Java语言开发者会感到非常熟悉,因为这样的结构和HashMap是没有区别的。哈希的第原创 2021-02-04 22:49:24 · 11692 阅读 · 11 评论 -
redis(6):数据结构-List列表类型
一、介绍二、命令三、实践四、命令拾遗原创 2021-02-05 13:53:23 · 13116 阅读 · 11 评论 -
redis(7):数据结构-set集合类型
一、介绍二、命令三、实践四、命令拾遗原创 2021-02-06 00:19:11 · 11147 阅读 · 2 评论 -
redis(8):数据结构-zset有序集合类型
一、介绍二、命令三、实践四、命令拾遗原创 2021-02-06 22:39:34 · 13122 阅读 · 4 评论 -
redis(9):Redis 5种数据类型vs java类型
String ----- Map<String,String>Hash ----- Map<String,Map<String,String>>List----- Map<String,List< String >> 里面list 有序链表Set -------- Map < String , Set< String >> 里面set元素不能重复且无序zset -------- Map < String , S原创 2021-02-08 10:45:52 · 33284 阅读 · 8 评论 -
redis(10):redis五种数据结构应用场景
看完了redis的数据结构 ,在学习下各个数据结构的试用场景;一、string字符串有以下几个典型应用场景:缓存功能 最常用的功能,将热数据的查询结果缓存到redis;计数 也是减少数据库压力的方法之一,比如文章的点击量,统计网站访问次;共享session 这个在分布式或者负载均衡的web服务中非常常用,用户被负载均衡到不同服务器上的时候并不希望session丢失而重新登录;可以用redis做一个session管理的服务;同时还可以规定用户需要重新登录的时间间隔;限速 比如短信接口,.原创 2021-02-09 08:59:27 · 598 阅读 · 14 评论 -
redis(11):事务
关系型数据库中有事务的概念,redis一样也有;一、概念Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是 Redis 的最小执 行单位,一个事务中的命令要么都执行,要么都不执行。事务的应用非常普遍,如银行转账 过程中A给B汇款,首先系统从A的账户中将钱划走,然后向B的账户增加相应的金额。这两 个步骤必须属于同一个事务,要么全执行,要么全不执行。否则只执行第一步,钱就凭空消 失了,这显然让人无法接受。事务的原理是先将属于一个事务的命令发送给Redis,然后再让.原创 2021-02-10 14:10:31 · 1457 阅读 · 19 评论 -
redis(12):过期时间
一、命令介绍在实际的开发中经常会遇到一些有时效的数据,比如限时优惠活动、缓存或验证码等, 过了一定的时间就需要删除这些数据。在关系数据库中一般需要额外的一个字段记录到期时 间,然后定期检测删除过期数据。而在Redis中可以使用 EXPIRE命令设置一个键的过期时 间,到时间后Redis会自动删除它。EXPIRE 命令的使用方法为 EXPIRE key seconds,其中 seconds 参数表示键的过期时 间,单位是秒。EXPIRE命令返回1表示设置成功,返回0则表示键不存在或设置失败;如原创 2021-02-12 23:10:26 · 1944 阅读 · 23 评论 -
redis(13):排序
已经知道可以使用集合类型来存储文章标签数据,但是如果想要标签排序呢?一、有序集合的集合操作集合类型提供了强大的集合操作命令,但是如果需要排序就要用到有序集合类型。Redis 的作者在设计Redis的命令时考虑到了不同数据类型的使用场景,对于不常用到的或者在不损失过多性能的前提下可以使用现有命令来实现的功能,Redis就不会单独提供命令来实现。这 一原则使得Redis在拥有强大功能的同时保持着相对精简的命令。有序集合常见的使用场景是大数据排序,如游戏的玩家排行榜,所以很少会需要获得键中的全部数据.原创 2021-02-16 21:45:19 · 1433 阅读 · 14 评论 -
redis(14):消息通知
如何在博客中实现邮件订阅功能。邮件订阅功能太好实现了,无非是在博客首页放一个文本框供访客输入自己的邮箱地址,提交后博客会将该地址存入 Redis 的一个集合类型键中(使用集合类型是为了保证同一 邮箱地址不会存储多个)。每当发布新文章时,就向收集到的邮箱地址发送通知邮件。想的简单,可是做出来后却发现了一个问题:输入邮箱地址提交后,页面需要很久时间才能载入完。原来为了确保用户没有输入他人的邮箱,在提交之后程序会向用户输入的邮箱发送 一封包含确认链接的邮件,只有用户单击这个链接后对应的邮箱地址才会.原创 2021-02-18 15:11:25 · 485 阅读 · 3 评论 -
redis(15):管道
客户端和Redis使用TCP协议连接。不论是客户端向Redis发送命令还是Redis向客户端返 回命令的执行结果,都需要经过网络传输,这两个部分的总耗时称为往返时延。根据网络性能不同,往返时延也不同,大致来说到本地回环地址(loop backaddress)的往返时延在数量 级上相当于 Redis 处理一条简单命令(如 LPUSH list 1 2 3)的时间。如果执行较多的命令,每个命令的往返时延累加起来对性能还是有一定影响的。一、不使用管道时在执行多个命令时每条命令都需要等待上一条命令执行.原创 2021-02-18 16:04:55 · 317 阅读 · 4 评论 -
redis(16):节省空间
Jim Gray 曾经说过:“内存是新的硬盘,硬盘是新的磁带。”内存的容量越来越大, 价格也越来越便宜。2012年年底,亚马逊宣布即将发布一个拥有240GB内存的EC2实例,如果放到若干年前来看,这个容量就算是对于硬盘来说也是很大的了。即便如此,相比于硬盘 而言,内存在今天仍然显得比较昂贵。而 Redis 是一个基于内存的数据库,所有的数据都存 储在内存中,所以如何优化存储,减少内存空间占用对成本控制来说是一个非常重要的话 题。一、精简键名和键值精简键名和键值是最直观的减少内存占用的方式,如.原创 2021-02-18 22:46:38 · 1420 阅读 · 17 评论 -
redis(17):持久化-RDB方式
Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,然而当Redis重启 后,所有存储在内存中的数据就会丢失。在一些情况下,我们会希望 Redis 在重启后能够保 证数据不丢失,例如:将Redis作为数据库使用时。将 Redis 作为缓存服务器,但缓存被穿透后会对性能造成较大影响,所有缓存同时 失效会导致缓存雪崩,从而使服务无法响应。这时我们希望 Redis 能将数据从内存中以某种形式同步到硬盘中,使得重启后可以根据 硬盘中的记录恢复数据。这一过程就是持久化。Redis支持.原创 2021-02-19 09:02:21 · 2815 阅读 · 20 评论 -
redis(18):持久化-AOF方式
继续看redis持久化的第二种方式 AOF一、概述当使用Redis存储非临时数据时,一般需要打开AOF持久化来降低进程中止导致的数据丢失。AOF可以将Redis执行的每一条写命令追加到硬盘文件中,这一过程显然会降低Redis 的性能,但是大部分情况下这个影响是可以接受的,另外使用较快的硬盘可以提高AOF的性能。二、开启AOF默认情况下Redis没有开启AOF(append only file)方式的持久化,可以通过 appendonly 参数启用:appendonly yes开启A.原创 2021-02-19 11:56:00 · 589 阅读 · 46 评论 -
redis(19):集群之复制原理
作为一个小型项目,使用一台 Redis 服务器已经非常足够了,然而现实中的 项目通常需要若干台Redis服务器的支持:从结构上,单个 Redis 服务器会发生单点故障,同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并分配在不同的服务器上;从容量上,单个 Redis 服务器的内存非常容易成为存储瓶颈,所以需要进行数据分 片。同时拥有多个 Redis 服务器后就会面临如何管理集群的问题,包括如何增加节点、故障 恢复等操作。 为此,本章将依次详细介绍 Redis 中的复制、哨兵(.原创 2021-03-01 16:57:28 · 1997 阅读 · 7 评论 -
redis(20):win下将redis安装为本地服务
前面介绍了redis在各个OS下的安装,但是一般开发人员都是在win下,突发奇想,把redis server安装成win的服务,后面开机自动启动;1、环境win10redis-5.0.102、效果redis-server安装成win的一个服务,电脑开机后自动启动;3、步骤3.1 将redis-server注册成服务在 cmd 命令框下,移动到 C:\Windows\System32\cmd.exe 目录,安装 Redis 为本地服务:redis-server.exe --s.原创 2021-03-02 11:59:37 · 212 阅读 · 7 评论 -
redis(21):集群之哨兵
在一个典型的一主多从的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用。当主数据库遇到异常中断服务 后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续 提供服务。然而整个过程相对麻烦且需要人工介入,难以实现自动化。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。 注意 Redis 2.6 版也提供了哨兵工具,但此时的哨兵是1.0版,存在非常多的问题,在任 何情况下都不应该使用这个版本的哨兵。所以本文中介绍的哨兵都是Red.原创 2021-03-03 09:43:49 · 319 阅读 · 10 评论 -
redis(22):redis主从模式搭建
Redis的集群有三种模式,分别是主从复制、哨兵模式和Cluster模式。主从复制模式无法做到高可用,因此Redis提供了哨兵模式,以监听各个节点的状态,防止节点故障。sentinel的搭建相比主从复制模式复杂一些,但是相比Cluster模式,又不需要安装如ruby环境,所以还是比较简单的。本文主要涉及搭建主从模式的redis;1、部署1.1 环境win10redis Redis-x64-5.0.101.2 规划redis的安装参考这里一主二从 (原来6379端口的redis留作.原创 2021-03-03 13:52:41 · 390 阅读 · 4 评论 -
redis(23):集群之哨兵-部署与使用
上篇文章学习了redis哨兵模式的概念+原理,现在继续学习下哨兵的部署和使用1、部署1.1 规划1.2 环境1.3 配置2、使用原创 2021-03-04 09:33:31 · 251 阅读 · 3 评论 -
redis(24):集群
即使使用哨兵,此时的 Redis 集群的每个数据库依然存有集群中的所有数据,从而导致 集群的总数据存储量受限于可用存储内存最小的数据库节点,形成木桶效应。由于Redis中的所有数据都是基于内存存储,这一问题就尤为突出了,尤其是当使用 Redis 做持久化存储服 务使用时。1. 概述对 Redis 进行水平扩容,在旧版 Redis 中通常使用客户端分片来解决这个问题,即启动 多个 Redis 数据库节点,由客户端决定每个键交由哪个数据库节点存储,下次客户端读取该 键时直接到该节点读取。这样可以实现.原创 2021-03-04 11:35:21 · 312 阅读 · 10 评论 -
redis(25):集群模式的安装部署
前面已经学习了redis集群模式的一些概念,今天实现win下redis 集群模式的安装部署;1. 规划1.1 环境win10Redis-x64-5.0.10,redis win下安装见这里Ruby Installer v2.3.3 x64 (ruby安装略)1.2 规划设计三主三从主(Master)从(Slave)7100710172007201730073012. 配置新建6个空文件夹最后文件夹结构如下图每个文件夹里.原创 2021-03-06 10:58:11 · 2370 阅读 · 14 评论 -
redis(26):集群模式原理
集群模式原理1. Redis集群方案Redis Cluster 集群模式通常具有 高可用、可扩展性、分布式、容错 等特性。Redis 分布式方案一般有两种:1.1 客户端分区方案客户端 就已经决定数据会被 存储 到哪个 redis 节点或者从哪个 redis 节点 读取数据。其主要思想是采用 哈希算法 将 Redis 数据的 key 进行散列,通过 hash 函数,特定的 key会 映射 到特定的 Redis 节点上。客户端分区方案 的代表为 Redis Sharding,Redis S.原创 2021-03-06 15:35:49 · 300 阅读 · 2 评论 -
redis(27):三种集群模式总结
前面已经看完redis的三种模式,今天比较一下Redis 支持三种集群方案主从复制模式Sentinel(哨兵)模式 Cluster 模式1. 主从复制模式1.1 主从复制的作用通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服.原创 2021-03-06 22:21:25 · 548 阅读 · 12 评论 -
redis(28):安全
Redis的作者Salvatore Sanfilippo曾经发表过Redis宣言 ,其中提到Redis以简洁为美。 同样在安全层面Redis也没有做太多的工作。1.可信的环境Redis的安全设计是在“Redis运行在可信环境”这个前提下做出的。在生产环境运行时不 能允许外界直接连接到 Redis 服务器上,而应该通过应用程序进行中转,运行在可信的环境 中是保证Redis安全的最重要方法。Redis的默认配置会接受来自任何地址发送来的请求,即在任何一个拥有公网IP的服务器 上启动 Redis .原创 2021-03-07 16:08:42 · 2635 阅读 · 35 评论 -
redis实战(1):redis三个java客户端选择
jedis、redisson、lettuce比较原创 2021-03-12 11:42:50 · 533 阅读 · 0 评论 -
redis实战(2):Redis可视化客户端汇总
转自 https://cloud.tencent.com/developer/article/1596714因为 Redis 官方只提供了命令行版的 Redis 客户端 redis-cli,以至于我们在使用的时候会比较麻烦,通常要输入一堆命令,而且命令行版的客户端看起来也不够直观,基于以上两个原因我们需要找一个可视化的 Redis 客户端,下面是我这些年使用过的一些 Redis 可视化客户端,分享给大家。1.RedisClient是否收费:免费项目介绍:Java 编写的 Redis 连接.转载 2021-03-12 13:45:11 · 331 阅读 · 0 评论 -
redis实战(3):对文章进行投票
如果一个文章获得200+票(up vote),则是一篇有趣的文章;假如每天发布1k文章,其中50篇是有趣的文章,则把这50篇放到文章列表的前100位,至少一天。原创 2021-03-13 12:00:02 · 413 阅读 · 2 评论 -
redis实战(4):发布并获取文章
发布并获取文章原创 2021-03-13 15:31:00 · 255 阅读 · 0 评论 -
redis实战(5):对文章进行分组
群组功能有两个部分组成,一个不是负责记录文章属于哪个群组,另外一个部分负责取出群组内的文章;1 从群组中添加/删除文章为了记录各个群组都保存了哪些文章,需要为每个群组创建一个集合,将所属同一个群组的文章ID保存到该集合def add_remove_groups(conn,article_id,to_add=[],to_remove[]){ article = "article:"+article_id for group in to_add conn.sadd("group:"+grou.原创 2021-03-13 16:43:15 · 529 阅读 · 0 评论 -
redis实战(6):登录和cookie缓存
1 检查会话当我们登录互联网服务(比如银行账户或者电子邮件)的时候.这些服务都会使用cookie来记录我们的身份。cookie又少量数据组成,网站会要求我们的浏览器存储这些数据, 并在每次服务发送请求时将这些数据传回给服务。对于用来登录的cookie.有两种常见的方 法可以将登录信息存储在cookie里面:一种是签名(signed ) cookie,另一种是令牌(token) cookie。签名cookie通常会存储用户名,可能还有用户ID、用户最后一次成功登录的时间.以及网 站觉得有用的其他任何信息除原创 2021-03-13 21:10:23 · 1008 阅读 · 0 评论 -
redis实战(7):购物车
网址(Netscape)公司在20世纪90年代中期先在网络中使用了cookie.这些cookie 最终 变成了我们在上一节讨论的登录会话cookie。cookie 最初的意图在于为网络零件商(web retailer) 提供种购物乍,让用户可以收集他们想要购买的商品。在cookie之前.有过儿种不同的购物车 解决方案,但这些方案个都不太好用。原创 2021-03-15 10:38:56 · 919 阅读 · 0 评论 -
redis实战(8):页面缓存
在动态生成网页的时候,通常会使用模板语言来简化网页的生成操作。通过浏览数据进行分析,发现自己所处理的95%的web页面每天最多只会改变一次,这些页面的内容实际上并不需要动态生成,而我们的工作就是想办法不再生成这些页面,减少网站再动态生成内容上面说话的时间,可以降低网站相同负载所需的服务器数量,并网网站的速度变得更快。所有标准的python应用框架都提供了在处理请求之前后者之后添加层的能力,这样的层通常叫做中间件或者插件,我们将创建一个这样的层来调用redis缓存函数:对于宇哥不能被缓存的请求,函数直接生产原创 2021-03-15 11:25:43 · 333 阅读 · 0 评论 -
redis实战(9):Redis 高负载排查记录
钉钉收到同事反馈:突然大量用户反馈进入网页很慢,登录服务器一看,Redis调用时间严重超时。太可悲,高速的缓存反而变成了短板,由于数据一直没有返回,导致了请求响应变慢。1 现象前端页面响应慢接口返回慢redis调用严重超时2 排查2.1 环境检查服务器的 CPU 负载内存网络输入输出QPS连接数上面指标查看方式很多,linux命令行、外部软件(Grafana,zabbix)或者redis的info命令都可以查看,不具体演示2.2 redis检查通过 info .原创 2021-03-19 17:35:07 · 968 阅读 · 0 评论 -
redis实战(10):SLOWLOG命令详解
redis高负载排查时候用到它,仔细研究研究它1 什么是 SLOWLOGSlow log 是 Redis 用来记录查询执行时间的日志系统。查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。2 设置 SLOWLOGSlow log 的行为由两个配置参数(configuratio.原创 2021-03-19 18:53:24 · 1994 阅读 · 0 评论 -
redis实战(11):Redis性能监控指标汇总
1 监控指标性能指标:Performance内存指标: Memory基本活动指标:Basic activity持久性指标: Persistence错误指标:Error1.1 性能指标:PerformanceNameDescriptionlatencyRedis响应一个请求的时间instantaneous_ops_per_sec平均每秒处理请求总数hi rate(calculated)缓存命中率(计算出来的1.2 内存指标: Memory原创 2021-03-19 19:29:00 · 935 阅读 · 0 评论