redis是什么

Redis运维文档_数据库

redis的重要特性

1.速度快
所有数据都放在内存中,内存大小与redis性能相关。
redis使用c语言编写。
redis使用单线程架构。

2.基于键值对存储
有五种数据结构:字符串,哈希,列表,集合,有序集合。

3.丰富的功能
提供了键过期功能,实现了缓存。
提供了发布订阅功能,可以实现消息系统。
提供了pipeline功能,将一批命令一次性传到redis,减少开销。

4.简单稳定
源码很少,3.0版本后只有五万行代码。
不依赖操作系统中的类库。
使用单线程模型法使redis服务端处理模型变得简单。

5.支持多种客户端语言
java,php,python等

6.支持数据持久化
RDB和AOF

7.主从复制
8.高可用和分布式:哨兵,集群

应用场景

1.缓存-键过期时间
缓存session会话,比如淘宝,登录之后一般24小时内不用重新登录。
缓存用户信息,找不到就去mysql找,然后再写入redis。
优惠券过期。

Redis运维文档_配置文件_02


上述第四点,比如我发了一条动态,我@列表里所有女生,女生就是一个标签。集合有求同存异的功能,比如我爱好【篮球,足球,音乐】,你爱好【游泳,泡妞,音乐】,那么我们就可以做个功能,把关于音乐的一些新闻推送给标签为音乐的人。

Redis运维文档_缓存_03

5.消息队列系统-发布订阅
结合ELK进行日志收集

redis安装部署

目录规划:

Redis运维文档_Redis运维文档_04

安装部署

Redis运维文档_Redis运维文档_05


Redis运维文档_缓存_06


make install就是将一些可执行文件复制到环境变量里,变成命令。

Redis运维文档_数据库_07


然后执行install_server.sh,然后会出现一些交互式确认,我们可以看到下图的conf,里面有一个配置文件,官方最全的配置文件模板,然后执行完会自动开启redis服务器。(这一步我只是为了说明在哪里去找conf文件)

Redis运维文档_配置文件_08


现在来编写我们的简易版配置文件,在conf目录下建立一个文件。

Redis运维文档_数据库_09

启动redis服务器

Redis运维文档_数据库_10


客户端登录redis服务器并查看日志

Redis运维文档_缓存_11


Redis运维文档_Redis运维文档_12

redis基本操作

全局命令

查看所有key
key *
此命令线上禁用,因为他会列出素有的key,内存直接就挂了。

Redis运维文档_数据库_13

Redis运维文档_数据库_14

字符串

Redis运维文档_redis_15


Redis运维文档_数据库_16


Redis运维文档_配置文件_17

Redis运维文档_配置文件_18


MSET是一次性插入多个key-value,然后redis有一个特点,当新插入的key与已有的key重复,那么新的key对应的值会覆盖旧的。

Redis运维文档_缓存_19


上图是获取多个value,如果没有,则显示nil

Redis运维文档_Redis运维文档_20


TTL查看key-value的存活时间,如果是-1,就说明永久存在(除非你手动del);expire是设置存活时间,当存活时间结束后,再用TTL查看,就变成-2了,说明过期后被删掉了。严谨来说,-2是表示没有这个值。

Redis运维文档_配置文件_21

可以用expire命令来做优惠卷过期时间,k2里面存的是一张优惠卷,100指的是100秒后过期,然后之前拼多多后台有人又在下面执行了一句set k2 v2,然后k2就被重置了,再用TTL查看过期时间,结果为-1,-1代表永不过期。

Redis运维文档_Redis运维文档_22

列表

Redis运维文档_配置文件_23


Redis运维文档_redis_24

Redis运维文档_配置文件_25

Redis运维文档_配置文件_26

Redis运维文档_配置文件_27

哈希

Redis运维文档_缓存_28

Redis运维文档_Redis运维文档_29

集合

Redis运维文档_缓存_30


Redis运维文档_数据库_31


Redis运维文档_数据库_32


Redis运维文档_缓存_33


Redis运维文档_配置文件_34


Redis运维文档_Redis运维文档_35

redis持久化

如下图,我把redis关了,然后再打开,会发现数据全没了,因为redis数据是在内存中的,必须要持久化到磁盘。

Redis运维文档_Redis运维文档_36

RDB方式持久化

Redis运维文档_redis_37

Redis运维文档_配置文件_38

在执行BGSAVE后,会产生一个.rdb文件,当我关掉redis后,再打开redis,它会自动将.rdb加载到内存,然后就有数据了。

Redis运维文档_缓存_39

Redis运维文档_缓存_40

如果在配置文件里配置RDB,则如下图所示:

Redis运维文档_Redis运维文档_41

【注】就算没有满足save的条件,但是只要你配置了RDB,那么当你以shutdown方式关闭了redis后,他会自动先bgsave,然后再关闭;如果你用kill -9的方式关掉redis,那么并不会自动触发bgsave;

如果你用kill或pkill关掉redis,那么也是会先bgsave,然后才被kill。

AOF方式持久化

类似于mysql的binlog,也就是只记录操作。

Redis运维文档_redis_42


Redis运维文档_数据库_43

Redis运维文档_redis_44


AOF与RDB可共存,然后内存默认读AOF。