没有合适的资源?快使用搜索试试~ 我知道了~
Redis核心知识点总结
资源推荐
资源详情
资源评论
基础篇
入门概述
定义
Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议
是一个高性能的Key-Value数据库,提供了丰富的数据结构,例如String、Hash、List、Set、
SotedSet等等
数据是存在内存中
Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模
式、Redis Sentinel和Redis Cluster集群架构方案
功能
分布式缓存,减轻mysql的负担
硬件:mysql数据存储在硬盘,redis数据操作主要在内存,访问速度快
查询:mysql通过全表扫描,redis通过key访问value,查询速度快
关系的处理:mysql是关系型数据库,redis是nosql中的一种,不需要处理关系
.
查询数据先回从缓存中找,如果没有命中再去mysql中查询,查询结果再写回到缓存
内存存储和持久化(RDB+AOF)
redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
高可用架构搭配(某个redis挂了,也不影响缓存架构设计)
单机
主从
哨兵
集群
缓存穿透、击穿、雪崩
分布式锁
队列
通过Reids的队列功能做购买限制
比如到节假日或者推广期间,进行一些活动,限制今天只能购买几次商品或者一段时间内只能
购买一次
优势
性能极高 - Redis能读的速度是110000次/秒,写的速度是81000次/秒
数据类型丰富,不仅仅支持简单的key-value类型的数据同时还提供list,set,zset,hash等数据结
构的存储
支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
支持数据的备份,即master-slave(主从)模式的数据备份
redis架构图
.
相关资料
查看文档
https://redis.io/官网
http://www.redis.cn/中文镜像官网,部分知识落后
https://www.redis.com.cn/documentation.html中文文档
源码地址https://github.com/redis/redis
在线测试https://try.redis.io/
命令参考http://doc.redisfans.com/
新特性
新特性查询https://github.com/redis/redis/releases
新特性 介绍
多AOF文
件支持
7.0 版本中一个比较大的变化就是 aof 文件由一个变成了多个,主要分为两种类型:
基本文件(base files)、增量文件(incr files),请注意这些文件名称是复数形式说明每
一类文件不仅仅只有一个。在此之外还引入了一个清单文件(manifest) 用于跟踪文
件以及文件的创建和应用顺序(恢复)
config命
令增强
对于Config Set 和Get命令,支持在一次调用过程中传递多个配置参数。例如,现在
我们可以在执行一次Config Set命令中更改多个参数: config set maxmemory
10000001 maxmemory-clients 50% port 6399
限制客户
端内存使
用Client-
eviction
一旦 Redis 连接较多,再加上每个连接的内存占用都比较大的时候, Redis总连接内
存占用可能会达到maxmemory的上限,可以增加允许限制所有客户端的总内存使
用量配置项,redis.config 中对应的配置项// 两种配置形式:指定内存大小、基于
maxmemory 的百分比。maxmemory-clients 1gmaxmemory-clients 10%
listpack紧
凑列表调
整
listpack是用来替代ziplist 的新数据结构,在 7.0 版本已经没有 ziplist 的配置了
(6.0版本仅部分数据类型作为过渡阶段在使用)listpack 已经替换了 ziplist 类似
hash-max-ziplist-entries 的配置
访问安全
性增强
ACLV2
在redis.conf配置文件中,protected-mode默认为yes,只有当你希望你的客户端在
没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no
Redis
Functions
Redis函数,一种新的通过服务端脚本扩展Redis的方式,函数与数据本身一起存
储。简言之,redis自己要去抢夺Lua脚本的饭碗
RDB保存
时间调整
将持久化文件RDB的保存规则发生了改变,尤其是时间记录频度变化
命令新增
和变动
Zset (有序集合)增加 ZMPOP、BZMPOP、ZINTERCARD 等命令Set (集合)增加
SINTERCARD 命令LIST (列表)增加 LMPOP、BLMPOP ,从提供的键名列表中的第
一个非空列表键中弹出一个或多个元素。
性能资源
利用率、
安全、等
改进
自身底层部分优化改动,Redis核心在许多方面进行了重构和改进主动碎片整理V2:
增强版主动碎片整理,配合Jemalloc版本更新,更快更智能,延时更低
HyperLogLog改进:在Redis5.0中,HyperLogLog算法得到改进,优化了计数统计
时的内存使用效率,7更加优秀更好的内存统计报告如果不为了API向后兼容,我们
将不再使用slave一词......(政治正确)
安装
安装要求
Linux环境安装Redis必须先具备gcc编译环境
gcc是linux下的一个编译程序,是C程序的编译工具
查看当前的gcc环境:gcc -v【如果没安装则该命令不存在】
安装:yum -y install gcc-c++
redis版本选择
查看安装的redis版本:redis-server -v
要求安装6.0.8以上的版本(为了安全,防止黑客攻击)
安装步骤
1. 下载获得redis-7.0.0.tar.gz后将它放入我们的Linux目录/opt
2. /opt目录下解压redis
解压命令:tar -zxvf 压缩包
3. 进入redis目录
4. 在redis目录下执行make命令【安装redis】
命令 make && make install
linux安装redis(解决make报错) - 门罗的魔术师 - 博客园 (cnblogs.com)
make之后就可以在任何地方使用redis命令了
5. 查看默认安装目录: usr/local/bin(Linux下的/usr/local类似我们windows系统的C:\Program
Files)
redis-benchmark:性能测试工具,服务启动后运行该命令,看看自己笔记本性能如何
redis-check-aof: 修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump: 修复有问题的dump.rdb文件
redis-cli: 客户端,操作入口
redis-sentinel: redis集群使用
redis-server: Redis服务器启动命令
6. 将默认的redis.conf拷贝到自己定义好的一个路径下,比如/myredis cp redis.conf
/myredis/redis.conf
7. 修改/myredis目录下redis.conf配置文件做初始化设置
redis.conf配置文件,改完后确保生效,记得重启,记得重启
1. 默认daemonize no 改为 daemonize yes【使redis作为后端服务器启动】
2. 默认protected-mode yes 改为 protected-mode no【保护模式,别人连接时需要禁用
掉】
3. 默认bind 127.0.0.1改为 直接注释掉(默认bind 127.0.0.1,只能本机访问)或改成本机IP
地址,否则影响远程IP连接
4. 添加redis密码:requirepass 密码 【如果不配置,登录
时就不需要密码,建议配置】
8. 启动服务:在usr/local/bin目录下使用 redis-server redis配置文件 命令
9. 连接服务:redis-cli -a 密码 [-p 端口号]【不知道端口号默认找6379】
打开一个新会话输入 ps -ef | grep redis 命令检查是否连接成功
.
测试redis是否可以正常使用:ping命令
10. 测试helloworld
.
11. 退出连接客户端:quit
12. 关闭redis服务器
单实例关闭:redis cli -a 密码 shutdown
多实例关闭【指定端口关闭】:redis cli -p 端口号 shutdown
卸载(了解)
1. 停止redis-server服务
2. 删除/usr/local/lib目录下与redis相关的文件【rm -rf /usr/local/bin/redis-*】
!!!Redis10大数据类型
前情提要
这里说的数据类型是value的数据类型,key的类型都是字符串
数据类型操作命令的查询
官网英文https://redis.io/commands/
中文http://www.redis.cn/commands.html
帮助命令:help @类型
命令不区分大小写,而key区分大小写
十大数据类型介绍
redis字符串 (String)
是二进制安全的【支持序列化】,意思是redis的string可以包含任何数据,比如jpg图片或者序列
化的对象
是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
redis列表 (List)
是简单的字符串列表,按照插入顺序排序
可以添加一个元素到列表的头部(左边)或者尾部(右边),底层实际是个双端链表
最多可以包含 2^32 - 1 个元素(4294967295,每个列表超过40亿个元素)
redis哈希表 (Hash)
是一个 string 类型的field (字段)和 value(值) 的映射表,hash 特别适合用于存储对象
每个 hash 可以存储 2^32 - 1键值对 (40多亿)
redis集合 (Set)
是String类型的无序集合,集合成员是唯一的,意味着集合中不能出现重复的数据
集合对象的编码可以是 intset 或者 hashtable
Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
集合中最大的成员数为2^32 - 1(4294967295,每个集合可存储40多亿个成员)
redis有序集合 (sorted set,又称ZSet)
zset和set相比
相同的是
是string类型元素的集合,且不允许重复的成员
是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1
不同的是
每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行
从小到大的排序
zset的成员是唯一的,但分数(score)可以重复
剩余215页未读,继续阅读
资源评论
断线续传
- 粉丝: 207
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功