什么是Redis

什么是Redis? 我觉得没有什么比官网解释的更牛逼了。

在这里插入图片描述

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

一、开源就不说了,意味着它的文档很

二、基于内存(一个字快)

计算机中任何计算都是在内存中进行的,它是与cpu进行沟通的桥梁,内存特点就是读写速度快。
高并发情况下,如果大量请求去直接查询数据库,很容易造成数据库卡死,如果把经常查询的数据放在内存中,那么会有效的解决这个问题。

三、多数据结构

String (字符串类型)
String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。
list (列表)
Redis的List类型其实就是每一个元素都是String类型的双向链表。我们可以从链表的头部和尾部添加或者删除元素。这样的List既可以作为栈,也可以作为队列使用。
Hash
Hash是一个String类型的field和value之间的映射表,即redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap,因此Hash特别适合存储对象。相对于把一个对象的每个属性存储为String类型,将整个对象存储在Hash类型中会占用更少内存。
Set
Redis 集合(Set类型)是一个无序的String类型数据的集合,类似List的一个列表,与List不同的是Set不能有重复的数据。实际上,Set的内部是用HashMap实现的,Set只用了HashMap的key列来存储对象。

Sortset

SortSet顾名思义,是一个排好序的Set,它在Set的基础上增加了一个顺序属性score,这个属性在添加修改元素时可以指定,每次指定后,SortSet会自动重新按新的值排序。sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score。

为什么要使用Redis?

(我们从以下几两个方面说明)

一、性能

如果我们不进行缓存处理,当大量请求过来,直接去访问数据库,会造成数据库压力过大甚至挂掉。那么我们就需要使用Redis缓存来缓冲这部分压力,能大大减少数据库压力。

在这里插入图片描述
(没有缓存的情况,一旦大量请求涌入,造成数据库崩溃)

在这里插入图片描述
(当存在缓存的时候,应用程序会先去查询Redis缓存,有的话直接返回,如果没有去查询数据库,返回给客户,并放入缓存一份,如果下次相同请求直接存缓存查询数据返回,这样节省了大量时间)

二、并发

当短时间内突然请求量增大,那么Redis起到了很好的缓冲作用,请求会先去访问Redis,然后才落到数据库。

Redis的缺点

  1. 缓存与数据库双写一直性问题
  2. 缓存穿透问题
  3. 缓存雪崩问题
  4. 缓存并发竞争问题
第一个问题又可以分为最终一致性和强一致性。对于要求强一致性的数据不能使用缓存,任何解决方案都是保证了最终一致性。(我们的解决方案都是为了降低发生双写一致性问题的概率但是根本上无法解决)
双写一致性问题解决方案
  1. 先删除缓存,在更新数据库。
  2. 读写请求异步串化(保证强一致性,但是会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求)
缓存穿透问题是指,大量请求查询缓存中不存在的数据,从而穿过缓存直接去请求数据库。
  1. 利用锁机制,去查库的时候先获得锁,如果没有获得锁休眠一段时间重试。
  2. 异步更新(缓存预热)
  3. 维护一份有效key的名单,然后通过过滤器判断如果不是有效key直接返回。(恶意key)
缓存雪崩问题是指,在同一时刻大量缓存失效,造成该时刻大量请求直接访问数据库。
  1. 锁机制(同上),缺点造成系统吞吐量大大降低。
  2. 给失效时间加上一个随机值,防止某一时间大量缓存同时失效
  3. 双缓存 缓存A,缓存B(没有失效时间)
实际操作的时候,先查A,如果有直接返回,如果没有查询B直接返回,然后异步更新A缓存。

Redis安装和操作

到官网下载适合自己操作系统的版本,然后常规安装。本章针对windows版本的redis安装及说明。
我们安装后进入安装目录

在这里插入图片描述

启动redis-server.exe 启动redis服务

在这里插入图片描述

自动弹出黑窗口,最后一行打印出端口号,就说名我们的redis服务启动成功。

(但是这样有个缺点,每次我们重启机器使用redis都需要先启动redis服务,很麻烦你),我们可以把redis启动程序添加到windows服务里
-----》 redis-server.exe --service-install redis.windows.conf

Redis配置
安装目录中存在两个conf配置文件

在这里插入图片描述
通常为redis.windows-service.conf,而不是redis.windows.conf。后者是以非系统服务方式启动程序使用的配置文件。
redis默认是没有密码的,我们打开redis.windows-service.conf,并查找requirepass在这里插入图片描述
可以看到默认是注掉的,我们添加一行,这里我用123456当做redis的密码
让我们重启Redis服务
在这里插入图片描述
然后利用redis cli打开控制台,看到我如果想操作,需要权限认证。
在这里插入图片描述
用我们设置的密码登录数据库

在这里插入图片描述
接下来我们就可以进行Redis操作啦,具体的Redis命令,大家可以查一下,网上很多的哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值