[Database] Redis 随笔
Redis 随笔
1. 特点
- 非关系数据库 non-relational database
- 内存数据库
- 高性能
- 主从复制
- 可持久化存储
- 发布与订阅
- 支持脚本
2. 数据类型5种
STRING
- 可以是字符串、整数、浮点数
- 操作
- 对整个字符串或都字符串的一部分执行操作;
- 对整数或浮点数执行自增或自减操作;
LIST
- 链表,每个节点都包含一个字符串
- 操作
- 从链表两端推入或弹出元素;
- 依据偏移量对链表进行修剪(trim);
- 读取单个或者多个元素;
- 依据值查找或移动元素;
SET
- 包含字符串的无序收集器,并且各字符串独一无二、各不相同
- 操作
- 添加、获取、移除单个元素;
- 检查一个元素是否存在于集合中;
- 计算交集、并集、差集;
- 从集合里面随机获取元素;
HASH
- 包含键值对的无序散列表
- 操作
- 添加、获取、移除单个键值对;
- 获取所有键值对;
ZSET
- 字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定
- 操作
- 添加、获取、删除单个元素;
- 依据分值范围或者成员来获取元素
3. 命令
- http://redisdoc.com
- SORT
- 过期
- EXPIRE
- EXPIREAT
- PERSIST
- TTL
- PTTL
- PEXPIRE
- PEXPIREAT
基本事务 transaction
- MULTI
- EXEC
- UNWATCH
- WATCH
- DISCARD
4. 数据安全与性能保障
持久化
- 快照 snapshotting
- 将存在于某一时刻的所有数据都写入硬盘里面
- 操作
- 执行 BGSAVE
- 执行 SAVE
- 配置选项 save 60 10000 ; 可以多个条件,条件满足时执行一次BGSAVE
- 收到SHUTDOWN 或 TERM信号时,会执行SAVE
- 一个Redis连接另一个Redis 服务器,并发送SYNC 开始复制时,主服务器非刚执行完BGSAVE操作,就会执行BGSAVE
- AOF 只追加文件 append-only file
- AOF 持久化会将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化。
- 重写/压缩AOF文件
- 执行命令 BGREWRITEAOF
- 设置选项
- auto-aof-rewrite-min-size
- auto-aof-rewrite-percentage
复制 replication
- 让其他服务器拥有一个不断更新的数据副本,从而使拥有副本的服务器可以用于处理客户端发送的读请求。
- slaveof host port
- slaveof no one
- 主从链
- 检验硬盘写入
- INFO命令输出结果aof_pending_bio_fsync 属性的值是否为0
- 验证快照文件和AOF文件
- redis-check-aof
- redis-check-dump
事务
- 事务型流水线
- PyRedis
- conn.pipeline()
- conn.multi *** conn.exec
- PyRedis
- 非事务性流水线
- PyRedis
- conn.pipeline(False)
- PyRedis
性能测试工具
- reids-benchmark
分布式锁
Redis使用WATCH命令来代替对数据进行加锁,因为WATCH只会在数据被其他客户端抢先修改了的情况下通知执行了这个命令的客户端,而不会阻止其他客户端对数所进行修改,所以这个命令被称为乐观锁(optimistic locking)
发布、订阅
publish、subscribe
降低内存占用
短结构
Redis 为列表、集合、散列和有序集合提供了一组配置选项,可以让Redis以更节约空间的方式存储长度较短的结构。
在列表、散列、有序集合的长度较短或者体积较小的时候,Redis可以选择使用和种名为压缩列表(ziplist)的紧凑存储方式来存储这些结构。压缩列表以序列化的方式存储数据,这些数据每次被读取的时候都要进行解码,每次被写入的时候也要进行局部的重新编码,并且可能需要对内存里面的数据进行移动。
一般压缩列表的长度限制在 1024 个以内,每个元素体积不能超过 64字节,一般能同时兼顾内存占用和高性能这两方面优点。
配置使用
* list-max-ziplist-entries 512 #允许包含的最大元素数
* list-max-ziplist-value 64 #每个节点最大体积是多少个字节
* hash-max-ziplist-entries 512
* hash-max-ziplist-value 64
* zset-max-ziplist-entries 128
* zset-max-ziplist-value 64
* set-max-intset-entries 512
分片结构 sharding
- 通过哈希环等算法,把列表、集合、散列分布到多处存储,来减小元素数,从而使用压缩列表减少内存占用。
- 打包存储二进制位和字节
- 对于简短并且长度固定的连续ID,可以用分片Redis字符串去存储。
扩展Redis
增加从服务器
使从服务器可写
slave-read-only
分片扩展写性能和内存容量
解决实用案例
- Web 登录缓存
- 购物车
- 网页缓存
- 数据行缓存
- 基于搜索的应用
- 定向广告
- 社交网站
XMIND:

[Database] Redis 随笔的更多相关文章
- Redis随笔(一)Linux Redis 搭建
1.到官网下载redis上传服务器或者使用wget 下载 wget redis下载的路径 2.查看linux是否安装编译环境gcc,没有先安装 yum -y install gcc 3.解压redis ...
- 本地缓存google.guava及分布式缓存redis 随笔
近期项目用到了缓存,我选用的是主流的google.guava作本地缓存,redis作分布式 缓存,先说说我对本地缓存和分布式缓存的理解吧,可能不太成熟的地方,大家指出,一起 学习.本地缓存的特点是速度 ...
- Redis随笔(四)Centos7 搭redis3.2.9集群-3主3从的6个节点服务
1.虚拟机环境 使用的Linux环境已经版本: Centos 7 64位系统 主机ip: 192.168.56.180 192.168.56.181 192.168.56.182 每台服务器是1主 ...
- Redis随笔(三)主从搭建
1.安装redis cd /root/svr/wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar -zxvf redis-3.2 ...
- Redis随笔(二)redis desktop manager 安装并且连接redis服务器
1.首先在win10下安装redis desktop manager 2.查看虚拟机防火墙状态,启动状态,则关闭掉 查看防火墙状态: systemctl status firewalld.servic ...
- Redis随笔
dump.rdb:快照文件 删除这个文件 rm -f dump.rdb 第一步:创建6个redis实例,端口号从7001~7006 第二步:修改redis的配置文件 1.修改端口号 修改redis.c ...
- Redis随笔-rename效率问题
背景 rename是redis中给key重命名命令,rename key newkey的意思就是将key重命名为newkey.大部分文档在介绍rename的时候只将它描述成一个时间复杂度为O(1)的命 ...
- Redis随笔(六)RESP的协议规范
1.官网文档 https://redis.io/topics/protocol http://www.redis.cn/topics/protocol.html 2.协议介绍 redis协议规范(Re ...
- Redis随笔(五)Jedis、jedisCluster的使用
1.Jedis客户端 https://redis.io/clients 2.Jedis源码包与使用介绍 https://github.com/xetorthio/jedis 3.项目中使用 通过mav ...
随机推荐
- 洛谷P1411 砝码称重
传送门啦 这个题总体思路就是先搜索在 $ dp $ void dfs(int keep,int now){ //使用 放弃 if(now > m) return; //已经放弃超过m个了,就退出 ...
- js字符串基本操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtm ...
- HDU 2609 How many(最小表示+set)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题目大意: 题目大意有n个有01组成的字符串,每个字符串都代表一个项链,那么该字符串就是一个环状 ...
- python 多线程删除MySQL表
一.需求分析 在<python 统计MySQL表信息>这篇博客中,链接如下: https://www.cnblogs.com/xiao987334176/p/9901692.html 已经 ...
- VS2015的对象浏览器的使用
用vs开发这么久了,还是第一次用上对象浏览器的功能,第一次用有一点懵逼,记录一下. 这个图标是项目 这是代表类,下面可以展开看到基类 在右边可以看到这个类的方法和成员 这个代表结构体 同样的右边显示成 ...
- GitHub在线创建文件夹
点击New files按钮,然后输入含有slash字符(“/”)的文件名即可.也就是建立一个含有路径(目录)的文件,即会自动产生新文件夹. 点击Upload files按钮,然后直接把本地的文件夹(内 ...
- C#和PHP 长整型时间互转
//2018/5/14 16:03:05转换:1526284985 public static double ConvertToDouble(DateTime date) { , , )); var ...
- CCF CSP 201509-4 高速公路
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-4 高速公路 问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在 ...
- hdoj1232 畅通工程(并查集)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1232 思路 使用并查集求解. 代码 #include <iostream> #includ ...
- supervisor安装(sentos7)
其实现在网络上supervisor的教程有很多,比较杂,我找了几个对我来说是有帮助的教程,再结合自己的理解做一些笔记,可以供自己以后翻看. 链接:https://www.cnblogs.com/Hai ...