Redis 的简单学习与整理
Redis 的简单学习与整理
背景
最近一直进行Redis性能调优和高可用的课题
但是不管什么课题,第一步应该是学习与使用redis
之前总结过 rdb 与 rdr 分析 键值对等内容.
但是发现想要深入进行分析时 掌握的知识是非常不足的
今天计划进行一下简单学习.
Redis服务与客户端
Redis是世界上最流行的键值对数据库.
他的编译和使用也非常简单(开源版, 企业版我没搞定,比较麻烦)
一般实际上只需要3个文件就足够了
redis-cli 是客户端工具
redis-server 是服务器端工具
redis.conf 是配置工具
Redis配置文件简介
redis.conf 是redis的核心配置文件
主要需要注意的配置项目是:
bind 127.0.0.1 或者 0.0.0.0
# 注意 127.0.0.1 仅允许本机访问. 0.0.0.0 可以外部访问
requirepass password
# 设置访问密码
save aof dump 等参数
# 设置持久化
protected-mode
# 建议关闭保护模式.
connection
# 默认10000个连接,可以改大, 但是不建议太多.
# redis 7 以后可以有 io多线程参数.
daemonize yes
#后台作为驻留服务运行.
服务启动与关闭
redis-server /path/to/redis.conf
#启动服务就可以了.
lsof -i:6379
#查询进程相关的信息
#注意监听如果是 localhost 的话 外部无法访问.
kill -9 xxxx
#或者是执行shutdown 关闭服务也可以.
登录Redis服务器
redis-cli
#就可以默认登录 本机 6379 端口的服务
redis-cli -a Yourpassword -p Yourport
#可以明文指定密码 -p 可以单独指定端口号.
redis-cli -c
#集群模式登录的命令.
#可以选择任意一个集群的端口进行登录与访问.
进入机器后可以查询服务器的状态
info
# 可以查看redis服务器的信息.
info keyspace ; info memory; info clients
# 可以查看不同的服务器信息.
dbsize
#也可以查看当前数据库的键值对数量.
Redis的键值对类型
String: 字符串
Hash: 散列
List: 列表
Set: 集合
Sorted Set: 有序集合
Ridis关于key的命令简介
keys *查看当前库所有key (匹配:keys *1)
# 注意这个命令不能常用,会导致严重的性能问题, 会hang住系统.
exists key判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的key数据
unlink key 根据value选择非阻塞删除
仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。
expire key 10 10秒钟:为给定的key设置过期时间
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
select命令切换数据库
dbsize查看当前数据库的key的数量
flushdb清空当前库
flushall通杀全部库
Redis String类型key说明
set key value
#设置键值对
*NX:当数据库中key不存在时,可以将key-value添加数据库
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥
get key
# 获取键对应的键值.
append key value
# 添加指定的值到末尾
setnx key value
# 只有键值对不存在时才会设置具体的值.
Redis List类型的说明
lpush/rpush key value1 value2 value3 ....
#从左边/右边插入一个或多个值。
lpop/rpop key
#从左边/右边吐出一个值。值在键在,值光键亡。
rpoplpush key1 key2
#从 key1 列表右边吐出一个值,插到 key2 列表左边。
lrange key start stop
#按照索引下标获得元素(从左到右)
len key
#获得列表长度
linsert key before value newvalue
#在 value 的后面插入 newvalue 插入值
lrem key n value
#从左边删除n个value(从左到右)
lset key index value
#将列表key下标为index的值替换成value
Redis Set类型的说明
Redis set对外提供的功能与list类似是一个列表的功能,
特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,
又不希望出现重复数据时,set是一个很好的选择,
并且set提供了判断某个成员是否在一个set集合内的重要接口,
这个也是list所不能提供的。
Redis的Set是string类型的无序集合。
它底层其实是一个value为null的hash表,
所以添加,删除,查找的复杂度都是O(1)。
Redis Set类型的说明
sadd key value1 value2
# 添加 value1 value2 key中. 如果已经存在会就行插入,并且排重.
smembers key
# 取出该集合的所有值.
sismember key value
# 检查key 是否存在于set中.
scard key
# 检查key值的数量
srem key value
# 删除key中value的项目
spop key
# 随机吐出一个项目
sinter / sunion / sdiff
# 交集 并集 差集
Redis Hash类型的说明
Redis hash是一个string类型的field和value的映射表,
hash特别适合用于存储对象。
hgetall key
# 获取hash 所有的field 和value的映射表信息.
hset key field value
#给 key 集合中的 field 键赋值 value
hget key1 field
#从 key1 集合 field 取出 value
hmset key1 field1 value1 field2 value2 ...
#批量设置hash的值
hexists key1 field
#查看哈希表 key 中,给定域 field 是否存在。
hkeys key
# 出该hash集合的所有field
hvals key
# 列出该hash集合的所有value
hincrby key field increment
#为哈希表 key 中的域 field 的值加上增量 1 -1
hsetnx key field value
#将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
Redis Zset类型的说明
Redis有序集合zset与普通集合set非常相似,
是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了
一个评分(score),这个评分(score)
被用来按照从最低分到最高分的方式排序集合中的成员。
集合的成员是唯一的,但是评分可以是重复了 。
Redis Zset类型的说明
zadd key score1 value1 score2 value2 …
# 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zrange key start stop [WITHSCORES]
#返回有序集 key 中,下标在 start stop 之间的元素
#带WITHSCORES,可以让分数一起和值返回到结果集。
zrangebyscore key minmax [withscores] [limit offset count]
#返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
#有序集成员按 score 值递增(从小到大)次序排列。
zrevrangebyscore key maxmin [withscores] [limit offset count]
#同上,改为从大到小排列。
zincrby key increment value
#为元素的score加上增量
zrem key value
#删除该集合下,指定值的元素
zcount key min max
#统计该集合,分数区间内的元素个数
zrank key value
#返回该值在集合中的排名,从0开始。
Redis 持久化相关
RDB(Redis DataBase)
AOF(Append Of File)
RDB
Redis会单独创建(fork)一个子进程来进行持久化,
会先将数据写入到 一个临时文件中,待持久化过程都结束了,
再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,
这就确保了极高的性能 如果需要进行大规模数据的恢复,
且对于数据恢复的完整性不是非常敏感,
那RDB方式要比AOF方式更加的高效。
RDB的缺点是最后一次持久化后的数据可能丢失。
save : save时只管保存,其它不管,全部阻塞。
手动保存。不建议。
bgsave:Redis会在后台异步进行快照操作,
快照同时还可以响应客户端请求。
save 900 1
表示 15分钟内有一次变化就落盘
RDB的优缺点
优点:
1. 适合大规模的数据恢复
2. 对数据完整性和一致性要求不高更适合使用
3. 节省磁盘空间
4. 恢复速度快
缺点:
1. Fork的时候,内存中的数据被克隆了一份,
大致2倍的膨胀性需要考虑
2. 虽然Redis在fork时使用了写时拷贝技术,
但是如果数据庞大时还是比较消耗性能。
3. 在备份周期在一定间隔时间做一次备份,所以如果Redis意外down掉的话,
就会丢失最后一次快照后的所有修改。
AOF
以日志的形式来记录每个写操作(增量保存),
将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件,
redis启动之初会读取该文件重新构建数据,
换言之,redis 重启的话就根据日志文件的内容将
写指令从前到后执行一次以完成数据的恢复工作
启动方式: 修改默认的appendonly no,改为yes
appendfsync always|everysec|no
优缺点
优点:
1. 备份机制更稳健,丢失数据概率更低。
2. 可读的日志文本,通过操作AOF稳健,可以处理误操作。
缺点:
1. 比起RDB占用更多的磁盘空间。
2. 恢复备份速度要慢。
3. 每次读写都同步的话,有一定的性能压力。
4. 存在个别Bug,造成恢复不成功.
未完待续
Redis 的简单学习与整理的更多相关文章
- redis的简单学习记录
安装 1 brew install redis 启动redis服务 1 redis-server & 启动命令 1 redis-cli -h 127.0.0.1 -p 6379 利用gored ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- 超全PHP学习资源整理:入门到进阶系列
PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...
- 第二弹:超全Python学习资源整理(进阶系列)
造一个草原要一株三叶草加一只蜜蜂.一株三叶草,一只蜂,再加一个梦.要是蜜蜂少,光靠梦也行. - 狄金森 "成为编程大牛要一门好语言加一点点天分.一门好语言,一点点天分,再加一份坚持.要是天分 ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(七)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(六)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(四)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(三)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Redis源码学习:字符串
Redis源码学习:字符串 1.初识SDS 1.1 SDS定义 Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构.SDS不仅用于 保存字符串, ...
随机推荐
- 实践解读丨Python 面向对象三大特征之多态
摘要:多态从字面意思上看就是多种形态,在我们python的面向对象里就是不同的对象在接收相同方法或者函数时会产生不同的行为,也就是说,每个对象可以用自己的方式去响应共同的函数,不同的方式实现不同的结果 ...
- 全网呕血整理:关于YOLO v3原理分析
摘要:YOLO系列的目标检测算法可以说是目标检测史上的宏篇巨作,接下来我们来详细介绍一下YOLO v3算法内容. 算法基本思想 首先通过特征提取网络对输入特征提取特征,得到特定大小的特征图输出.输入图 ...
- 互斥锁Mutex:鸿蒙轻内核中处理临界资源独占的“法官”
摘要:本文带领大家一起剖析鸿蒙轻内核的互斥锁模块的源代码,包含互斥锁的结构体.互斥锁池初始化.互斥锁创建删除.申请释放等. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十 互斥锁Mutex& ...
- 云小课丨SA基线检查:给云服务来一次全面“体检”
摘要:随着企业上云进程的加快,由于云服务配置不合理.不合规等引发的安全风险与日俱增.如果没有加以重视并做及时的诊断处置,将会对企业云上业务带来巨大的安全隐患. 本文分享自华为云社区<云小课丨安全 ...
- 对话 BitSail Contributor | 姚泽宇:新生火焰,未来亦可燎原
2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计划第一期,目前已有 12 位开发者为 BitSail 社区做出贡献,成为了首批 Bit ...
- PPT 动画-制作一个倒酒
波浪往左上方,慢慢运动 数字 渐入 + 渐出 + 居中对齐 酒杯绘制 波浪绘制 上方的点全部设成[平滑顶点] https://getwaves.io/ 快速生成波浪[Office 2016 不支持插入 ...
- Kubernetes(K8S) Controller - Deployment 介绍
什么是controller 实际存在的,管理和运行容器的对象 Pod 和 Controller 关系 Pod 是通过 Controller 实现应用的运维,比如伸缩.滚动升级等等 Pod 和 Cont ...
- docker-compose部署SpringCloud
1.安装 docker-compose 将 docker-compose-Linux-x86_64 传到 /usr/local/bin 目录下,并改名为 docker-compose 2.设置权限 ...
- 模板层之标签 自定义模板语法 模板的继承与导入 搭建测试环境 ORM常用关键字
目录 模板层之标签 自定义模板语法 快速浏览 前期准备 自定义过滤器 自定义标签 自定义inclusion_tag 模板的继承与导入 快速浏览 引入 模板的继承 划定子板可修改的区域 block 在模 ...
- 阿里云Imagine Computing创新技术大赛正式开启!
阿里云 Imagine Computing 创新技术大赛,是由阿里云与英特尔主办,阿里云天池平台.边缘云.视频云共同承办的顶级赛事,面向个人开发者和企业的边缘云领域算法及实时音视频应用类挑战. 本次创 ...