redis——数据库
redis服务器将所有数据库都保存在redis/redisServer中,数组db存放所有数据库,每一项是一个redisdb结构。dbnum代表数据库数量。
客户端有一个指针指向当前数据库,可以切换,也就是移动指针。
键空间
现在稍微介绍一下redisdb结构,它的字典保存了所有键值对
键空间的键也就是数据库的键, 每个键都是一个字符串对象。
键空间的值也就是数据库的值, 每个值可以是字符串对象、列表对象、哈希表对象、集合对象、有序集合对象
所有数据库的操作,添加一个键值对, 删除一个键值对, 获取某个键值对, 等等,都是通过对键空间字典进行操作来实现的。
维护
读写键空间的时候,服务器会执行一些额外操作,比如:
- 读一个键后(读操作写操作都要对键读取), 会根据键是否存在, 更新键空间命中(hit)次数或不命中(miss)次数。
- 读取一个键后, 服务器会更新键的 LRU (最后一次使用)时间, 这个值可以用于计算键的闲置时间。
- 如果服务器在读一个键时, 该键已经过期, 服务器会删除这个键, 然后执行其他操作。
- 如果客户使用 WATCH 监视某个键,在对这个键进行修改之后, 会将这个键记为脏(dirty),让事务程序知到这个键被修改
- 服务器每次修改一个键之后, 都会对脏(dirty)键计数器的值增一, 这个计数器会触发服务器的持久化以及复制操作执行
- 如果服务器开启了数据库通知功能, 那么在对键进行修改之后, 服务器将按配置发送相应的数据库通知。
时间
用户可以给某个键设置生存时间,过期时间是一个UNIX时间戳,到时间自动删除这个键。
redisdb结构的expires字典保存了所有的键的过期时间,我们称这个字典为过期字典。
三种过期键删除策略
1)定时删除:创建一个定时器,到时间立即执行删除操作(对内存友好,因为能保证过期了立马删除,但是对cpu不友好)
2)惰性删除:键过期不管,每次获取键时检查是否过期,过期就删除(对cpu友好,但是只有在使用的时候才可能删除,对内存不友好)
3)定期删除:隔一段时间检查一次(具体算法决定检查多少删多少,需要合理设置)
淘汰策略
当Redis占用内存超出最大限制 (maxmemory) 时,可采用如下策略 (maxmemory-policy) ,让Redis淘汰一些数据,以腾出空间继续提供读写服务 :
noeviction: 对可能导致增大内存的命令返回错误 (大多数写命令,DEL除外) ;
volatile-ttl: 在设置了过期时间的key中,选择剩余寿命 (TTL) 最短的key,将其淘汰;
volatile-lru: 在设置了过期时间的key中,选择最少使用的key (RU) ,将其淘汰;
volatile-random: 在设置了过期时间的key中,随机选择一些key,将其淘汰;
allkeys-1Lru: 在所有的key中,选择最少使用的key (LRU) ,将其淘汰;
allkeys-random: 在所有的key中,随机选择一些key,将其淘汰;
redis——数据库相关推荐
- redis mysql查询数据类型_linux 常见的标识与Redis数据库详解
xxx@xxx:~$ : 第一个 xxx 只的是 用户名 第二个 xxx 代表的是 HOST主机 ~ : 当前用户的根, 根的位置在 /home/用户名 $ : 代表当前用户是一个普通用户 # : 代 ...
- Redis数据库设置密码
Redis数据库的默认打开方式为无密码打开,现在要将其设置为以密码形式打开. Redis文件夹内容 1.修改配置文件 在redis.windows.conf文件中设置密码的命令中添加requirepa ...
- 彻底取代Redis+数据库架构,京东618稳了!
作者介绍 京东零售在线存储部,致力于分布式系统.开源数据库技术的研究,主要负责数据库性能调优.监控和架构设计. 过去十年,随着移动互联网指数级的增长,企业和用户对应用程序的响应性能要求越来越高, 如何 ...
- Ubuntu16.04下安装Redis数据库
技术交流QQ群:1027579432,欢迎你的加入! 1.安装redis数据库 安装命令:sudo apt-get install redis-server 2.检查redis服务器系统进程 cdl@ ...
- redis数据库和python的交互
转载地址:https://blog.csdn.net/skyannesky/article/details/78068049 一.引入redis模块 import redis 二.在python中获取 ...
- 超强、超详细Redis数据库入门教程
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...
- redis 数据库主从不一致问题解决方案
redis 数据库主从不一致问题解决方案 参考文章: (1)redis 数据库主从不一致问题解决方案 (2)https://www.cnblogs.com/wadhf/p/11865681.html ...
- (Windows Maven项目)Redis数据库的安装和操作实现
Redis是一个内存数据库,他会把你写入其中的数据缓存到内存中,之后会周期性的往磁盘中写入,这篇文章中介绍的是在Windows环境下利用Maven工具编译运行Java文件实现Redis数据库的操作. ...
- Redis数据库教程——系统详解学习Redis全过程
Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统: Key-Value Store是当下比较流行的话题,尤其 ...
- Redis数据库的应用场景介绍
https://www.jb51.net/article/68262.htm 一.MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...
最新文章
- eye--创建单位矩阵
- node 微信授权 获取openid
- C++ WINDOWS API 如何使用NMAKE和CL编译
- linux 查询注册服务,window下注册服务的命令小结
- PHP 编写和使用web服务 第一节
- 玩转 SpringBoot 2 快速整合 Listener
- Nutanix推出云基础架构远程管理IT解决方案
- python---用python实现插入排序
- foobar2000 正式登陆 iOS/Android
- Linux du命令和df命令
- STM32单片机定时器
- Windows/Linux下C++对于UUID的跨平台封装
- lisp不是函授型语言_LISP语言
- 复习——哈夫曼树及哈夫曼编码
- 虚拟机安装mysql数据库
- C 语言到底能做什么?What can C do?
- 传感器的使用,高仿微信摇一摇,动画加声音
- 高考录取系统的模拟(1)——成绩的模拟生成程序
- 零基础C语言入门001——编译器下载
- IGES格式文件举例
热门文章
- mysql8.0本机登录要1秒_Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)
- logback日志pattern_@Slf4j 实现日志输入到外部文件
- 矩阵运算——平移,旋转,缩放
- muduo for v210
- max file descriptors_年轻族的战场!宋MAX强势对比嘉际
- python钻石数据分析_数据分析该用什么工具?
- LSGO软件技术团队2015~2016学年第十六周(1214~1220)总结
- tfs 未能在以下位置创建报表文件夹 /TfsReports: 授予的权限不足,无法执行此操作
- TFS(Team Foundation Server)敏捷使用教程
- 数据结构中“图”的相关概念理解