官方称可以达到10w的qps
将数据存储在内存中
由c语言编写
线程模型为单线程
redis将所有数据保持在内存中,并异步更新到磁盘上
string
hash
list
set
zset
bitmap(位图)
hyperloglog(超小的内存唯一值计数器)
geo(地理信息定位)
asp.net (asp.net core)
java
python
ruby
lua
nodejs
支持类mq的发布订阅功能
支持lua脚本
支持事务
支持pipeline
redis 3.0的单机核心代码只有2300行代码
单线程模型
后续会详细说
在 v2.8 中支持redis sentinel
在 v3.0 中支持redis cluster
./redis-server
./redis-server --port 6379
./redis-server configpath
生产环境推荐此方式:单机多实例配置
是否是守护进程(yes/no),设置为yes时,redis会把启动日志输出到日志文件中
redis端口号
log 输出到标准设备,logs 不写文件,输出到空设备,/deb/null
数据库存放路径
string :raw , int , embstr
int的范围相当于java中的long,为8个字节长整型
字符长度少于等于39个长度时为embstr
字符长度超过39个长度时为raw,比起embstr,是不连续的
hash :hashtable(哈希表) , ziplist(压缩列表)
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
当hash结构的field数量小于等于512并且每个field与value的长度小于等于64时,hash会采用ziplist
list :linkedlist(双向循环链表) , ziplist(压缩列表)
list-max-ziplist-entries 512
list-max-ziplist-value 64
当list结构的元素数量小于等于512并且每个item的长度小于等于64时,list会采用ziplist
set :hashtable(哈希表) , intset(整数集合)
set-max-intset-entries 512
当set结构的元素数量小于等于512时候,set将采用intset
zset :skiplist(跳跃列表) , ziplist(压缩列表)
zset-max-ziplist-entries 512
zset-max-ziplist-value 64
当zset结构的元素数量小于等于512并且每个member的长度小于等于64时,zset会采用ziplist
当key的数量比较少时,redis采取以时间换空间的策略
当key的数量增多时,redis采取以空间换时间的策略
查看内部编码的方式 object encoding ${key}
ziplist的特点
连续内存
读写有指针位移,最坏o(n2)
新增删除有内存重分配
纯内存
使用epoll创建非阻塞io
由于是单线程,因此避免了线程切换和竞态消耗
一次只会运行一条命令
拒绝长命令/慢命令
keys
flushall
flushdb
slow lua script
mutil/exec
operate
修改config配置文件,然后重启redis服务
config set configname configvalue (前提需要当前配置支持动态配置)
如对本文有疑问, 点击进行留言回复!!
修复 Mac brew 安装 mongodb 报 Error: No available formula with the name ‘mongodb’ 问题详解
MongoDB中数据的替换方法实现类Replace()函数功能详解
网友评论