一、系统管理
1安装
·客户端、
平壤冷面 ·服务器(32bit、64bit)
2配置
·配置文件
·命令
CONFIG GET:显示配置项
CONFIG SET:设置配置项
·配置项
3管理
·启动、redis-rver /f
·停止: redis-cli shutdown
·服务器统计信息
1)INFO: 输出服务器的统计信息
梦到葬礼
2)CONFIG RESETSTAT:将以下统计项清0
∙ Keyspace hits
∙ Keyspace miss
∙ Number of commands procesd
∙ Number of connections received
∙ Number of expired keys
4持久性
1)快照
·配置文件
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data/redis_data/
#---快速配置
save 3600 1 #1小时
save 1800 10 #30分钟
save 600 100000 #10分钟10W次
·动态改变配置
- CONFIG SET save "3600 1 1800 10 600 100000"
·命令
- BGSAVE:在后台保存DB。父进程继续提供服务,子进程在后台保存DB。
- LASTSAVE:返回最近一次DB成功保存的unix时间戳。
·关掉快照
--方法一:将配置文件的所有save指令注释掉
--方法二:执行命令redis-cli config t save ""
·备注:
--rdb文件的大小约是内存的十分之一。
虎跟龙婚姻相配吗
联想电脑重装系统
2)AOF
·配置文件
·动态改变配置
·命令
3)备注
·持久性是通过fork子进程在后台执行的,在保存数据到磁盘时主进程会继续响应客户端的请求。
·快照和AOF可以同时使用
·通过CONFIG SET命令可以动态启动AOF,此时AOF文件的初始内容是通过内存中的数据构建的,随后的命令会被附加到AOF文件。因此动态配置方式和rver启动时就打开AOF的效果是一样的。
5复制
1)配置文件
在f 中添加下面的配置项,然后重启进程。
slaveof <masterip> <masterport>
2)命令
SLAVEOF no one #停止复制。Slave的原有数据不会被丢掉
SLAVEOF host port #从< host port >指定的master开始复制。Slave的原有数据会被丢掉
3)备注
·master重启后slave会自动重新同步。Slave的原有数据会被丢掉因为是医生
·master上执行FLUSHALL后,slave上的数据也会被清空
6内存
1) 丝瓜藤配置
·activerehashing: 重新hash 主哈希表,尽快释放内存
·在下列数据结构的<元素数>、<元素大小>不超过限制情况下有效较少内存使用
hash-max-zipmap-entries 64
hash-max-zipmap-value 64倦容
list-max-ziplist-entries 64
list-max-ziplist-value 64
t-max-intt-entries 64
zt-max-ziplist-entries 64
zt-max-ziplist-value 64
·内存上限:
# maxmemory <bytes>
# maxmemory-policy volatile-lru
# maxmemory-samples 3
可用的淘汰策略有:
# volatile-lru -> 使用LRU算法淘汰,仅针对有过期时间的key进行淘汰
# allkeys-lru -> 对所有key使用LRU算法进行淘汰
# volatile-random ->随机淘汰,仅针对有过期时间的key进行淘汰
# allkeys->random ->随机淘汰,对所有key进行淘汰
# volatile-ttl -> TTL最小的元素先淘汰
# noeviction -> 不淘汰,写操作以失败返回
注1:不配置时内存没有上限
注2:如果达到内存上限,且没有可淘汰元素,则所有写操作返回失败,读操作可以正常进行
2) 命令
3)备注
·32bit/64bit:
使用64bit时会比32bit多用20%的内存,原因是64bit时指针的长度是8个字节。
使用64bit不会有4G内存的限制
·数据集超过RAM时,性能会严重下降。此时操作系统的VM机制在发挥作用。
4)VM
·OS-vm:数据集超过RAM时操作系统的VM开始发挥作用。
·Redis-vm: redis自身实现的vm机制不再推荐使用,在将来的版本中会被移除。
二、命令
参考《redis_cmd.chm》
三、API
1、c
见:redis.io/clients
2、python
见:redis.io/clients
四、常见问题
1、Can't save in background: fork: Cannot allocate memory
广发证券是国企吗 解决:
方法1):
将'vm.overcommit_memory = 1' 添加到
/f,然后重启机器。
方法2):
执行命令:sysctl vm.overcommit_memory=1
然后用命令查看是否生效:sysctl -a | grep overcommit