让我们愉快地开始redis的学习吧

先介绍一下redis

Redis实现了对热点数据的高速缓存,提高应用的响应速度,极大缓解后端数据库的压力。所以现在主流的应用结构都会在客户端与数据库之间实现一个缓存层。这个缓存层就可以是我们的Redis

redis是一个基于内存的key-value数据库,但是redis也经常被认为是一个数据结构服务器,因为其value包括 stringlistsetsorted sethash。当然这些类型的元素也都是string类型,也就是说list,set这些集合类型也只能包含string 类型。

与mysql等数据库的区别

mysql使用磁盘存储我们的数据,虽然会在数据库层设置有缓存,但是粒度也是不够的,一般针对的是查询的内容,而且粒度也比较大,只有当数据库表数据发送变化是才能使用缓存。这不能很好地改善业务增删改查对系统的IO压力。

redis为什么这么快

redis支持10万+的qps(每秒内查询次数)

    1. redis是基于内存的,绝多数请求都是存粹的内存操作,执行效率高
    1. 数据结构简单,对数据操作也简单
    1. 采用单线程技术

缓存中间件memcache

  • memcache
    • 支持简单的数据类型(没有redis支持的多)
    • 不支持数据持久化存储(redis支持)
    • 不支持主从/分片(redis取反)
      所以说技术的选用是按需选择的

主流应用框架

  • 第一、二步请求缓存层,如果请求数据存在缓存中则直接返回;
  • 第三步请求数据如果不存在缓存层中,则穿透缓存层直接到存储层获取数据;存储层找到数据后先回写到缓存层,再返回客户端完成一次请求响应的操作,这样当下次请求同数据时就可以直接访问缓存层获取;
  • 第七八步的熔断机制是什么意思呢??即当我们发现存储层无法提供服务或者说存储层挂掉的时候,客户端请求会直接打在缓存层上,不管能不能获取数据都直接返回,这样就可以在有损的情况下对外提供服务。

docker安装redis

在window下使用docker请看Docker for Window 使用记录

docker pull redis //从远程拉去redis镜像
docker images //查看本地存在的镜像,此时应该就存在redis镜像廖

运行容器

可以新建一个data目录对redis镜像目录中的data进行数据交互

docker run [-v $PWD/data:/data] -d -p 6379:6379 redis redis-server --appendonly yes --requirepass "123456"
  • -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
  • -d : 将容器的在后台运行
  • -v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data .redis数据卷,如未加上这个,容器重启后数据将丢失.
  • redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
  • -requirepass "123456" 设置引号里字符为密码

注意如果使用$PWD来表示当前目录,请打开powershell。
如果使用映射-v请在Shared Drives 中选择所在的盘勾选上

连接redis

    1. 使用 redis-cli连接工具,安装时添加到环境变量
    1. 打开cmd/cmder 输入redis-cli -h 127.0.0.1 -p 6379

    1. 输入ping命令试试呗

至此redis的安装就完成了。