Redis数据库的学习

1. Redis介绍

(1) 什么是Redis?
Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型
(2) Redis有哪些特点?

  1. 支持多种数据结构,如 string(字符串)、list(双向链表)、dict(hash 表)、set(集合)、zset(排序 set)、hyperloglog(基数估算)
  2. 支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数 据恢复等操作,较好的防止数据丢失的手段。
  3. 支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的 同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。
  4. 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题

2. 安装Redis单机版

(1) 如何安装Redis单机版?
第一步 需要在 linux 系统中安装 gcc 命令:yum install -y gcc-c++
第二步 需要将下载好的 redis 压缩包添加到 linux 服务器中 版本:redis-3.0.0.tar.gz redis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。偶数版本时稳定版建议在生产环境中使用。3.0 版本更新比较大。集成了集群技术
第三步 解压压缩包 命令:tar -zxvf redis…
第四步 编译 redis 命令:进入 redis 的解压完毕的根目录下 执行命令:make
第五步 安装 redis 命 令 : 进 入 redis 的 解 压 完 毕 的 根 目 录 下 , 执 行 命 令 : make install PREFIX=/usr/local/redis
第六步:启动 redis 1,前端启动 在 bin 目录下执行命令: ./redis-server (ctrl+c)退出 redis

3. Redis数据类型 -String类型

(1) set/get命令的作用是什么?
Set存储键值对
Get查看键对应的值
(2) mset/mget命令的作用是什么?
Mset一次性存储多个键值对
Mget一次性查看多个键对应的值
(3) incr/decr命令的作用是什么?
Incr使整数类型自动加1存储
Decr使整数类型自动减1存储

4. Redis数据类型 -Hash类型

(1) hset/hget命令的作用是什么?
Hset存储hash类型的数据,形如hset key field value
Hget查看hash类型的数据,形如hget key field
(2) hmset/hmget命令的作用是什么?
Hmset一次性存储多个hash类型的数据,可以用来存储对象
Hmget一次性查看多个hash类型的数据
(3) hexists命令的作用是什么?
Hexists可以用来判断某个字段在hash表中是否存在
(4) hkeys/hvals命令的作用是什么?
Hkeys可以用来获取所有的字段名
Hvals可以用来获取多有的值

5. Redis数据类型 -List类型

(1) lpush/rpush命令的作用是什么?
Lpush表示向链表左侧添加元素
Rpush表示向链表右侧添加元素
(2) lpop/rpop命令的作用是什么?
Lpop表示向链表左侧删除元素
Rpop表示向链表右侧删除元素
(3) lrange命令的作用是什么?
lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列 表起始索引为 0
(4) llen命令的作用是什么?
llen key 返回链表中元素的个数 相当于关系型数据库中 select count(*)
分享/讲解/扩展思考
点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

6. Redis数据类型 -Set类型

(1) sadd/smembers命令的作用是什么?
sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
smembers key 返回 key 对应 set 的所有元素,结果是无序的
(2) scard命令的作用是什么?
scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
(3) sismember命令的作用是什么?
sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存在
(4) srem命令的作用是什么?
srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存 在或者 key 不存在返回 0

7. Redis数据类型 -SortedSet类型

(1) zadd命令的作用是什么?
zadd key score value 将一个或多个 value 及其 socre 加入到 set 中
(2) zrange命令的作用是什么?
zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令 相似)
zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数
(3) zremrangebyscore命令的作用是什么?
zremrangebyscore key start end 可用于范围删除操作

8. Redis的常用命令

(1) ping命令的作用是什么?
ping 测试 redis 是否链接 如果已链接返回 PONG
(2) echo命令的作用是什么?
echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值
(3) keys命令的作用是什么?
keys * 返回所有的 key 可以加*通配
(4) exists命令的作用是什么?
exists key 判断 string 类型一个 key 是否存在 如果存在返回 1 否则返回 0
(5) expire命令的作用是什么?
expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value
(6) ttl命令的作用是什么?
ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除
(7) flushdb命令的作用是什么?
flushdb 删除当前选择的数据库中的 key
(8) dbsize命令的作用是什么?
dbsize 返回当前数据库中的 key 的数目
(9) info命令的作用是什么?
info 获取服务器的信息和统计

9. Redis配置文件

(1) 如何配置Redis启动时为后置启动?
#是否在后台执行,yes:后台运行;no:不是后台运行(老版本默认)
daemonize yes
(2) 如何配置Redis监听端口?
#redis 监听的端口号。
port 6379
(3) 如何修改Redis的日志文件的保存位置?
#指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的 redis 标准输出是 /dev/null。
logfile /var/log/redis/redis-server.log

10. Redis数据持久化方式-RDB

(1) 什么是Redis的RDB备份方式?
RDB 方式:将 Redis 在内存中的数据库状态保存到磁盘里面,RDB 文件是一个经过压 缩的二进制文件,通过该文件可以还原生成 RDB 文件时的数据库状态(默认下,持久化到 dump.rdb 文件,并且在 redis 重启后,自动读取其中文件,据悉,通常情况下一千万的字 符串类型键,1GB 的快照文件,同步到内存中的 时间是 20-30 秒)
(2) RDB的备份策略是什么?
RDB 方式:将 Redis 在内存中的数据库状态保存到磁盘里面,RDB 文件是一个经过压 缩的二进制文件,通过该文件可以还原生成 RDB 文件时的数据库状态(默认下,持久化到 dump.rdb 文件,并且在 redis 重启后,自动读取其中文件
(3) 如果修改RDB的备份策略?

设置 sedis 进行数据库镜像的频率。 # 900 秒(15 分钟)内至少 1 个 key 值改变(则进行数据库保存–持久化) # 300 秒(5 分钟)内至少 10 个 key 值改变(则进行数据库保存–持久化) # 60 秒(1 分钟)内至少 10000 个 key 值改变(则进行数据库保存–持久化) save 900 1
save 300 10
save 60 10000
(4) RDB备份方式所生成的备份文件默认的会放到什么位置?
当前目录

11. Redis数据持久化方式-AOF

(1) 什么是Redis的AOF备份方式?
AOF 持久化方式在 redis 中默认是关闭的,需要修改配置文件开启该方式。 AOF:把每条命令都写入文件,类似 mysql 的 binlog 日志
(2) AOF的备份策略是什么?
AOF 方式:是通过保存 Redis 服务器所执行的写命令来记录数据库状态的文件。
(3) AOF备份方式所生成的备份文件默认的会放到什么位置?
bin目录下
(4) AOF方式是如何做数据恢复的?
服务器在启动时,通过载入和执行 AOF 文件中保存的命令来还原服务器关闭之前的数据库状态,
具体过程: 载入 AOF 文件
创建模拟客户端
从 AOF 文件中读取一条命令
使用模拟客户端执行命令
循环读取并执行命令,直到全部完成
如果同时启用了 RDB 和 AOF 方式,AOF 优先,启动时只加载 AOF 文件恢复数据

12. Redis集群介绍

(1) Redis的集群原理是什么?
集群要求集群节点中必须要支持主备模式,也就说集 中的主节点(Master)至少要有一个从节点(Slave) 每一个蓝色的圈都代表着一个 redis 集群中的主节点。它们任何两个节点之间都是相互 连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其 进行存取和其他操作
(2) Redis集群的容错原理是什么?
Redis 之间通过互相的 ping-pong 判断是否节点可以连接上。如果有一半以上的节点去 ping 一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的从节点。如 果某个节点和所有从节点全部挂掉,我们集群就进入 fail 状态。还有就是如果有一半以上的 主节点宕机,那么我们集群同样进入 fail 了状态。这就是我们的 redis 的投票机制
(3) 在Redis集群中是如何做数据分片存储的?
当我们的存取的 key 到达的时候,redis 会根据 crc16 的算法得出一个结果,然后把 结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通 过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存 取操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值