redis从入门到熟练

2020-03-22  本文已影响0人  Chaos_YM

速度快:10w ops(每秒10万次读写)
原因:在内存中;C语言开发;单线程(按优先级从前到后)
数据结构:string,list,hash tabls,sets,sorted sets,bitmap,hyperloglog(本质字符串)

一,redis八个特性

1,安装和启动

安装:

然后进入redis-5.0.7下的src目录中,主要看6个可执行文件:
redis-server, redis-cli, redis-benchmark, redis-check-aof, redis-check-dump, redis-sentinel
分别对应redis服务器,redis命令行,性能测试,AOF修复,RDB修复, sentinel服务器

启动:
直接启动:执行redis-server,默认端口6379
参数启动:增加参数
配置文件启动:文件路径以命令行参数传入(生产环境推荐)

常用配置:
daemonize: no|yes 是否以守护进程启动,默认no
port:端口 默认6379
logfile:日志文件
dir:工作目录

2,API

1,常用命令
注意:单线程的redis最好不要使用耗时的命令

keys [pattern]     # 用通配符展示key    o(n)的命令,生产环境少用,或者在从节点使用
dbsize             # 显示key的总数
exists key       # 判断存在  返回1/0
del key   (get set)        # 删除键值对   del b d si 同时删除多个
expire key seconds  # 设置过期时间
ttl key            # 产看剩余过期时间   返回 -2 表示key不存在  返回-1表示key存在,但是没有过期时间
persist key     # 去掉过期时间
type key        # 返回key的数据类型
# 以上命令 keys时间复杂度是o(n),其余都是o(1)

mget,mset  # 批量存取

2,数据结构,单线程
字符串:用做缓存,计数器,分布式锁 命令:incr, decr, incrby, decrby(增减,计数)
哈希:hget, hset, hdel
列表:有序,可以重复

3,其他功能

1),慢查询

符合慢查询条件的查询会插入到慢查询队列中(先进先出)

生命周期
慢查询配置一:
slowlog-max-len,设置慢查询队列长度,超出长度,先进的元素会被舍弃,默认128,同常1000(存在内存中,断电丢失)
慢查询配置二:
slowlog-log-slower-than,阙值,超过这个时间会加入慢查询队列,单位微秒,默认10000,通常设置1000
=0,记录所有,<0都不加入慢查询
常用命令:
slowlog get [n]:获取慢查询队列 指定条数
slowlog len:获取队列长度
slowlog reset:清空慢查询

2),pipeline

批量传输redis命令,节省网络时间开销(1次网络传输10ms级起步,redis命令微秒级)
pipeline非原子操作,顺序执行和返回,执行中可能插入其他命令
pipeline命令不易过多,返回数据有压力
每次只作用一个redis节点

3),发布订阅

发布者publisher 订阅者subscriber (实际上都是客户端)
消息队列(抢占式,只有一个订阅者收到)
频道channel
API:
publish channel message
subscribe [channel] 多个
unsubscribe [channel] 多个
psubscribe [pattern] 模式,通配符

4),bitmap,位图

getbit, setbit直接操作value的二进制的位
setbit key offset value value智能位0和1,offset为设置第几位,返回值为这个位原值
bitcount key [start end] 获取二进制位图值为一的个数

案例:独立用户统计,节省内存


用户统计.png 用户统计续.png

5),hyperloglog,极小空间完成数量统计

6),GEO,经纬度

4,持久化

持久化:redis数据的更新异步的保存在硬盘中
主流方式:AOF(日志) RDB(快照)

1),RDB

快照:数据在某个时间点的映像(类似于拷贝)
RDB触发机制:

save与bgsave.png

2),AOF

RDB的缺点:耗时,耗性能;不稳定,易丢失;
aof写命令的日志会先写入缓冲区,然后在进入硬盘
缓冲区到硬盘的三种策略:

重写:
命令过多导致AOF文件过大,处理难;为了减小文件大小和加快恢复速度。
原理:把过期的命令,可以覆盖的命令优化掉
实现:

3),AOF对比RDB,与选择

todo:此部分写完主从,再来补充。。。。。。


对比
上一篇下一篇

猜你喜欢

热点阅读