redis
2020-05-11 14:09:36 0 举报
AI智能生成
redis
作者其他创作
大纲/内容
Redis
基础
基本类型
String
int
如果可以用long类型来表示,使用int编码
embstr
不超过32字符的字符串使用embstr编码
row
超过32的使用row编码
List
quickList(ziplist和linkedlist混合体)
Hash
ziplist
使用条件:字符长度小于64,keys小于512
hashtable
Set
intset
都是整数集合,以及数量小于512
Zset
字符长度小于64,个数小于128
skiplist
stream
用于实现消息队列
安装包相关内容
redis-benchmark
可模拟客户端数和并发数模拟真实场景优化配置提高效率及吞吐量
dump.rdb
redis持久化的一种实现方式通过client save命令实现持久化(直接阻塞主线程)通过client bsave持久化(forks主线程)通过配置 save second savetimes(forks主线程)
redis-check-aof(Append-only file)
内存分配
自身内存
对象内存
缓冲内存
内存碎片
常用命令
内存模型
redisObject{ type;4bit//类型 encoding;4bit//编码 ptr;8byte//数据指针 refcount;4byte//引用次数 lru:24bit}
SDS(simple dynamic string)
jemalloc(内存分配器)
dictEntry
info memory
used_memory(分配器分配的内存总量)
used_memory_rss(向系统申请的内存总量)
total_system_memory(系统内存总量)
maxmemory(最大配置的内存)
maxmemory_policy(达到最大内存。释放内存策略)
mem_fragmentation_ratio(碎片率,正常1左右)
used_memory_peak(redis内存消耗峰值)
mem_allocator(内存分配器)
linux安装
1.解压2.cd /redis ,make3.make install4.编辑redis.conf5. ./redis-server /path/to/redis.conf
配置文件
5.0.5配置
单例集成使用
jedis
lettuce
redisson
哨兵Sentinal、集群Cluster
哨兵
集群
互联网项目使用场景
消息队列
缓存
过滤器
基于bitmap做布隆过滤器
锁
incr->incrementsetnx->setIfAbsentset->set主要利用redis的原子性
定时任务
频率控制
使用keys,设置阀值,当size 大于多少是则不通过使用keys是数据量庞大的系统中有问题,因为redis是单线程,key全局遍历会阻塞redis服务,时间复杂度O(n)使用scan 代替keys使用生产环境禁用keys ->rename-command KEYS \"\"
服务发现
分布式ID
利用increment方法在value值上+1increment方法redis进行了加锁操作,不用担心初始化的时候出现重复值
位图/统计日活月活等统信息
geo
用来计算来两点之前的距离获取某个点半径多少内的点
事务
底层原理
底层数据结构
核心思想
持久化
LUA脚本
spring-boot-starter-data-redisjedis默认线程不安全,阻塞I/O,需要额外引入连接池,创建多实例lettuce使用netty BIO,线程安全引用连接池加入依赖 comm-pool2
0 条评论
回复 删除
下一页