Redis 是一个高性能(读写频次高)的key-value的db,它支持数据持久化,支持一些基本的数据结构。它的操作具有原子性,还支持数据的备份等功能。

安装、启动

  • 安装:Redis 安装 | 菜鸟教程
  • 启动redis服务:redis-server.exe redis.windows.conf
  • 连接本地 redis 服务:redis-cli.exe -h 127.0.0.1 -p 6379

redis 配置 [5]

  • redis 有 master 端和 slave 端,启动的时候有deamon模式和非deamon
  • timeout :可以指定客户端闲置多久自动关闭
  • loglevel notice、logfile stdout:可以指定 日志级别、日志记录方式
  • 可以指定 db的数量,地址,名字
  • save 可以指定同步到本地数据的前提条件,比如说 300秒内有10次操作
  • appendfsync 可以指定是否每次操作都同步到本地数据,有三种方式,等操作系统同步( 由操作系统自动调度刷磁盘?)、每次更新完数据之后都会调用同步(性能差)和 每秒同步一次。如果否的话,可能断电会丢失一部分操作,同时也可以指定备份数据名

疑问:appendfsync everysec 跟 save 不是会冲突?
Ans:append记录的对象是 redis的写命令(比如 RPUSH list "A"),不是数据本身,存储的文件格式是 .aof;save 的记录对象是数据本身,存储的文件格式是 .rdb。所以它们的存储文件不一样。当打开了 append的时候,redis重启优先从append存的数据恢复[4]。

  • 可以指定存储到本地数据的时候,是否压缩,默认是有的,默认压缩格式是LZF
  • 作为 slave 的时候,可以指定默认链接的 master地址、密码
  • 作为 master 的时候,可以指定 同时最多有多少个客户端链接自己,达到限制数量后拒绝新的客户端链接;向客户端发送应答时,是否合并小包
  • vm-page 可以指定是否启用虚拟内存(就是redis会把 冷数据swap到磁盘中,访问多的页面换到内存里),虚拟内存的文件地址,定义大于 XX大小的数据都放在虚拟内存(磁盘)里,设置swap的page数量(我理解其实就是大小?),设置 并发访问swap文件的线程数量,如果设置为0,就意味着所有对swap文件的访问都是串行的
  • 同一主机上的多个redis实例 是否公用配置
  • hash-max-zipmap-entries:某个哈希对象超过某个阈值的时候,采用另一种更节省内存的存储方式(把唯一的id 做md5处理,这样更节省内存[1]),但是如果这个阈值配置得太大了,可能造成每次查找都要遍历全局 非常消耗CPU的结果[2]
  • activerehashing :是否开启 渐进式 rehash,需要rehash是因为 数据到达某个值之后,出现哈希冲突,这时候需要rehash,但是又不能影响当前的使用,所以需要分治地、 渐进地 进行rehash[3]

基础类型设值、取值

  • 基础设置是 SET GET
  • 列表是 lpush lrange
  • 哈希是 HSET HGET
  • 集合是 sadd smembers
  • 有序集合是 zadd

redis key

  • key可以有过期时间,也可以配置为永不过期
  • key可以正则批量查找
  • 可以 以key为单位 从一个db移动到另一个db
  • key可以被重命名
  • key可以被遍历,也可以按照正则(pattern)被遍历

redis string

  • 它可以设值,,可以一个命令同时取值设值,可以批量一次设置多个值,设置值的时候可以指定过期时间,可以一个命令判断不存在才设置值,判断不存在才设置值也可以批量搞。
  • 它可以取值,可以按照范围取值,可以批量一次取多个key,可以按位取值,可以取字符串长度
  • 修改:可以一个命令 给key对应的数值加一,可以给val 加指定数字,同理也可以减一或减去指定数值
  • 改string:可以给val后面append一小段新的字符串

redis hash

  • 可以批量删除key,可以批量设置key,可以在没这个key的时候才设置
  • 可以存储、获取、检测key是否存在
  • 可以给val加指定增量
  • 可以获取某哈希表的所有key,并遍历它们,也可以按照正则条件选择需要遍历的 去遍历
  • 可以获取某哈希表key的数量

redis list

  • 它本质是双向链表,所以可以从头尾pop数据
  • 可以从一个列表转移某数据到另一个列表中
  • 列表数据可以按照索引获取,可以获取指定范围的值,
  • 列表前后都可以增加新值,可以一次插入多个值
  • 可以按val移除列表元素(按照不同参数 可以移除指定个该val的元素,或者 完全移除所有该val的元素),可以只保留指定区间的元素。
  • 可以添加一个或多个值

redis set

  • 可以比较两个集合的差异,并存储差异
  • 可以算集合的交集,并存储交集
  • 可以判断某元素是否属于该set
  • 可以算并集,并存储并集
  • 可以迭代

redis sorted set(它比set多一个score,所有元素通过score排序):

  • 可以按照分数的区间返回数值
  • 可以按照顺序返回数据
  • 可以迭代
  • 可以批量操作分数,整体增加多少多少

参考:

[1] 哈希内存优化:https://blog.csdn.net/hobbs136/article/details/7625873?locationNum=5

[2] 阈值过大导致CPU过高:https://blog.csdn.net/justin051/article/details/84354087

[3] 渐进式哈希:https://www.cnblogs.com/williamjie/p/11205593.html

[4] redis的数据备份:https://zhuanlan.zhihu.com/p/106997927

[5] redis配置:https://www.runoob.com/redis/redis-conf.html

redis取值偶尔取不到_redis 入门相关推荐

  1. mysql1193 HY000_[MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system_MySQL

    bitsCN.com [MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system variable 'Innodb_buffer_pool_read_ ...

  2. python如何从列表中提取数据_Python 从列表中取值和取索引的方法

    如下所示: name_list["zhangsan","lisi","wangwu"] #1.取值 print(name_list[0]) ...

  3. springboot的redis工具类编写(采用RedisTemplate)(简单的取值,取多个值)。

    首先: redis存在于内存中,因此非常高效 存储特点是key-value 其还有许多高效的数据结构,能同时读写几万数据量. 在springboot中运用redis做一些验证存储非常管用, 同时因为r ...

  4. java jquery怎么取值_jquery 取值

    jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关 获取一组radio被选中项的值 var item = $('in ...

  5. 动态创建数组了解各种取值和取地址的问题以及感受内存地址

    image.png 源代码: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include "cd.h"//严重 ...

  6. jQuery对表单元素的取值和赋值操作代码

    使用常规的思路:$("#keyword").value 取值是取不到的,因为此时$('#keydord')已经不是个element,而是个jquery对象,所以应该使用:$(&qu ...

  7. lr参数化取值与连接数据库

    TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的. 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据. 2.数据文件一定要以一个空行结束, ...

  8. 下取整函数的含义_Excel将3.14159取值为3.15或3.1415? 两个函数为你效劳,拿走不谢...

    Hi,大家好,我是你们的朋友波波.欢迎进入波波Excel小课堂,勤奋好学的你必将有所收获. 现实工作中,Excel表格中的数值通常是以设置小数点位数来进行取值,但结果是按四舍五入进行取舍的(局限性很大 ...

  9. python元组取值_Python基础之元组

    元组初识 元组的认识 首先,我们来认识一下元组: # 定义一个元组 uesr_tuple = ("zhangsan", "lisi", "wangwu ...

最新文章

  1. java项目怎样提高性能_从代码的角度谈如何优化JAVA代码以提高性能【初、中级程序员必看】...
  2. 能实现自控的那天,再考虑其他
  3. mysql left join 空值_MYSQL Left Join如何选择NULL值?
  4. python ddt mysql_Python数据驱动DDT的应用
  5. keil用c语言怎么编辑器,用keil软件编写单片机程序的步骤
  6. python saltstack web_saltstack学习-8:web管理页面(halite)
  7. maven设置从本地读_如何在Eclipse中更改Maven本地存储库
  8. 处理word 多级标题编号不联动的问题
  9. 计算机网络面试基础知识
  10. B站视频直接下载成mp4格式
  11. 什么是局域网监控?是如何监控的...
  12. gitlab代码提交自动触发Jenkins token发版(二)
  13. css 浮动在最上层_css,如何让background img显示在最上层。
  14. 原生js代码实现图片放大境效果
  15. OLTP与OLAP简介
  16. 奶块服务器维护多久,奶块为什么要更新维护 | 手游网游页游攻略大全
  17. 7-16 然后是几点(15 分)
  18. word2003下的神秘咒语——灵活的棕色狐狸跳过懒狗
  19. 段码LCD屏幕的驱动方法
  20. Photoshop 2020MAC最新版下载地址 一键安装

热门文章

  1. VB讲课笔记14:二级VB知识点总结
  2. 【JSOI2007】【BZOJ1029】【codevs2913】建筑抢修,贪心与堆
  3. bzoj4517 [Sdoi2016]排列计数 组合数+错排
  4. 2017.4.22 进制转换 思考记录
  5. 2017.3.19 约数个数和 失败总结
  6. oracle延迟约束不起作用,Oracle可延迟约束Deferable的使用
  7. python epoll 写数据到数据库_Python--day40(EPOLL的使用、数据库基础)
  8. linux打开python3_Python3 执行Linux Bash命令的方法
  9. 安卓手机上跑_第一名易主?看看安兔兔公布的二月份安卓手机性能跑分排行
  10. linux的sendmail服务有啥用,Linux的SendMail服务