Redis学习记录
参考资料:
http://www.dengshenyu.com/%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF/2016/01/09/redis-reactor-pattern.html
http://www.redis.cn/topics/data-types.html
http://www.syyong.com/db/Redis-why-the-use-of-single-process-and-single-threaded-way-so-fast.html
https://toutiao.io/posts/546542/app_preview
http://ifeve.com/redis-persistence/
0. 环境
Redis server: 3.0.3
1. 数据类型
- 字符串(Strings)
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据。一个字符串类型的值最多能存储512M字节的内容。
- 列表(Lists)
Redis列表是简单的字符串列表,按照插入顺序排序。
- 集合(Sets)
Redis集合是一个无序的字符串合集。添加、删除以及测试元素是否存在操作的时间复杂度为O(1)。
- 哈希(Hashes)
Redis Hashes是字符串字段和字符串值之间的映射,所以它们是完美的表示对象的数据类型。
- 有序集合(Sorted sets)
Redis有序集合和Redis集合类似,是不包含相同字符串的合集。但每个有序集合的成员都关联着一个评分,这个评分用于把有序集合中的成员按最低分到最高分排列。
- Bitmaps 和 HyperLogLogs
Redis同样支持Bitmaps和HyperLogLogs数据类型,实际上是基于字符串的基本类型的数据类型,但有自己的语义。
2. Redis为什么速度快?
- 完全基于内存
- 单线程:CPU无需在多个线程之间来回切换
- I/O多路复用技术:异步非阻塞IO,既不会因为线程过多导致CPU频繁切换,又能充分利用服务器资源
3. Redis超时可能的原因及应对方法?
- 慢查询:确认是否使用慢查询,可以使用slowlog get num(例如slowlog get 10)查看相应的慢命令
- 内存不足:由于Redis完全基于内存,故内存使用率指标需要关注
- 连接客户端数量过多:连接客户端数量超过默认值容易导致超时
- 若redis主机为虚拟机,可能会有内存延迟:./redis-cli --intrinsic-latency 100这个命令可以在server端判断redis是否有延迟,在客户端通过-h -p 参数可以对比是否为网络导致的延迟
- 大量的删除、过期以及淘汰(由maxmemory-policy控制的)的大对象操作,需要释放相应的RAM,可能会造成redis阻塞,进而造成相应的延迟:若经常有比较大的对象进行删除、过期和淘汰,建议将这些对象分割成一些小对象。
- 持久化可能导致延迟,若数据集大的话,Redis启动持久化子进程很耗时,其间Redis可能短暂停止服务客户端:选择更合理的持久化方案,例如AOF + fsync every second
4. Redis持久化及其优缺点
- RDB持久化:可以在指定的时间间隔内生成数据集的时间点快照
- AOF持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集
| 优点 | 缺点 | |
| RDB |
|
|
| AOF |
|
|
5. Redis与Memcached的区别
- 实现机制不同:Redis单进程单线程,Memcached单进程多线程
- 持久化策略不同:Redis支持持久化,Memcached必须借助外部工具才能实现持久化
- Redis功能比Memcached更强大,Redis不仅仅是内存数据库(例如可利用Pub/Sub实现发布订阅的消息中间件),而Memcached仅仅是内存数据库
Redis学习记录的更多相关文章
- redis 学习记录
http://www.yiibai.com/redis/redis_quick_guide.html Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and s ...
- Redis学习记录(一)
在学习Redis之前,要知道什么是NoSQL? 1.NoSQL 1.1. 什么是NoSQL NoSQL(NoSQL = Not Only SQL),表示“不仅仅是SQL”,泛指非关系型数据库. 1.2 ...
- Redis学习记录之Java中的初步使用
1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http:// ...
- Redis学习记录之————微博项目
Key设计 全局相关的key: 表名 global 列名 操作 备注 Global:userid incr 产生全局的userid Global:postid Incr 产生全局的postid 用户相 ...
- Redis学习记录(三)
1.Redis集群的搭建 1.1redis-cluster架构图 架构细节: (1)所有的redis节点批次互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail ...
- Redis学习记录(二)
1.Key命令 设置key的过期时间. expire key second:设置key的过期时间 ttl key:查看key的有效期(如果显示正数说明该key正在倒计时,如果是-1说明该key永久保存 ...
- Redis学习记录及Jedis代码示例
文章目录 二.Redis简介 三.Redis安装 1. 下载并解压安装 2. 安装C语言编译环境 3. 修改安装位置 4. 编译安装 5.启动Redis服务器 ①默认启动 ②定制配置项启动 [1]准备 ...
- redis学习记录1 特性与优点
1.存储结构:字符串.散列.列表.集合.有序集合. redis存储结构的优势:数据在redis中的储存方式和其在程序中的储存方式相近:redis对不同数据类型提供非常方便的操作方式,如使用集合类型储存 ...
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
随机推荐
- 收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。
AndroidDevTools Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具.An ...
- 洛谷 P 1018 乘积最大 ==Codevs
题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...
- 【2018 Multi-University Training Contest 4】
01: 02:https://www.cnblogs.com/myx12345/p/9407551.html 03: 04:https://www.cnblogs.com/myx12345/p/940 ...
- PAT (Advanced Level) 1036. Boys vs Girls (25)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
- CodeForces 582A【multiset使用样例】
题意: 给一些无序的数字,求解一个矩阵,使得矩阵的每一个元素都是行和列标志数的gcd,输出行标志数. 首先对数字进行排序.复杂度n*log(n^2). 这题的证明有官方的英文题解==在这直接贴英文题解 ...
- Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析
package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax. ...
- html页面中拍照和上传照片那些事儿(一)
本文为原创,转载请注明出处: cnzt 文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6709037.html 一. 思路: <input type= ...
- 【Todo】Java线程面试题 Top 50 (转载)
原文链接:http://www.importnew.com/12773.html 这里有一个排版好看一点的:http://www.cnblogs.com/dolphin0520/p/3958019.h ...
- COCOS2DX学习之Box2d物理引擎使用之------动态物体的创建
1.创建一个物理世界 首先要引入一个头文件#include "Box2D\Box2D.h" 之后利用b2word创建一个对象,而且指定这个物理世界中的加速度方向. word = n ...
- hdoj 1203 I NEED A OFFER! 【另类01背包】【概率背包】
题意:... 策略:动态规划. 由于是求至少能得到一个offer的概率,那我们能够反着求.求得不到一个offer的概率.最后用1减去就好了. 代码: #include<string.h> ...