Redis 总结
Redis官网下载地址: https://redis.io/
Redis 客户端可视化:https://redisdesktop.com/download
一、Redis 是什么?
1.key-value 存储系统
2.value 的类型支持:String、list、set、zset、hash
二、Redis 安装及目录结构
1.在linux下安装redis
$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar xzf redis-5.0..tar.gz
$ cd redis-5.0.
$ make
下载后,make test 测试编译情况。
2.安装 ,进入解压后的 src 目录下
执行: make PREFIX=/usr/local/redis install
3.设置后台运行
首先赋值配置文件 redis-conf 到redis安装目录下,且修改 daemonize 为 yes
执行: ./redis-server ./redis.conf 启动服务端
redis-benchmark 性能测试工具
redis-check-aof 日志文件检测工(比如断电造成日志损坏,可以检测并修复)
redis-check-dump 快照文件检测工具,效果类上
redis-cli 客户端
redis-server 服务端
三、Redis 对于 Key 的操作命令
~1.Redis 对 String 的操作
. set key value (默认永久有效)
set key value 【ex 秒】【px 微秒】
mset k1 v1 k2 v2 .... 设置多个 key-value
2. get key 查询固顶的key
mget k1 k2 ... 获取多个 key对应的 value
3. del key 删除key
4.keys 参数(支持模糊查询)
* :任意字符
?:任意单个字符
[]:包含某个字符
5. rename key newKey
renamenx key newkey 当newkey 存在,则不该
6.select 参数(数字),选择某个DB
7. move key db 移动 key
8. randomkey 返回随机的key
9. exists key 判断key是否存在,存在为 1 ,不存在 0
10. type key 返回 key 的数据类型
11. ttl key 返回 key 的生命周期(秒)
- 永久有效
-2 key不存在
12. expire key 数字 设置 key 的生命周期(秒)
13. pttl key (毫秒)
14. pexpire key 数字(毫秒)
15. persist key 设置永久有效
16. setrange key offset value 将key 从 offset 开始改为 value,过大Ox00填充
17. getrange key start end
如果 start 过大,空串
start 大于 end 则,报错
18. getset key value 返回 key 的旧值,并且用新值替换
19. incr key 将key的值 +1 并返回
20. decr key 将key的值 -1 并返回
21. incrby key number 增加 +number
22. decrby key number 减少 number
23. setbit key offset 0/1
字母大小写切换(0100 0001) 第三位变0/1为 +/- 32
:设置offset对应二进制位上的值, offset 过大,中间用 0 填充
key 最大: M
~2. Redis 对链表的操作
1. lpush key value 插入到链表的头部
2. rpush key value 插入到链表尾部
3. rpop key 返回并删除尾部节点
4. lpop key 返回并删除头节点
5. lrange key start end 返回链表 start 到 end 的元素
从左 0 开始,右侧 -1
6. lrem key count value 从链表种删除 value 的值, 删除 count 个 后结束
count >0 从头部
count <0 从尾部
7. ltrim key start stop 切 statr 到 stop 的部分, 重新赋值给 key
8. lindex key index 返回 链表 key 中下表为index 的值
9. llen key 返回链表元素个数
10. linsert key after|before search value
在 key 链表中寻找 search 值 ,并在前|后插入 value
11. rpoplpush source dest 删除source尾部元素,插入dest 首部
12. brpop ,blpop key timeout
等待弹出key的元素,timeout 为超时时间 , 0表示一直等待
~3.Redis 对 Set 的操作
1. sadd key value[] 添加元素
2. smembers key 查看元素
3. srem key value[] 删除某些元素
4. spop key n 返回n个元素并删除
5. schar key 返回集合的个数
6. sismember key value 判断value是否存在于key集合 : 1 表示存在,0 表示不存在
7. srandmember key n 随机返回key的N个元素,默认为1
8. smove 集合A 集合B 元素a 将集合A中的元素a移到集合B
9. sinter k1 k2 k3 求三个集合的交集
10.sinterstore dest k1 k2 k3 将集合的交集存在dest 中
11.sdiff k1 k2 k3 求k1 与k2. k3.的差集并返回
12.sunion k1 k2 k3 求三个集合的并集并返回
~4.Redis 对Zset的操作
1. zadd key c1 v1 c2 v2
2. zrange key start stop 排序好的集合,从start到 stop 返回
3. zrem key v1 v2 删除元素
4. zcard key 返回元素个数
5.zrangebyscore key low high 返回按score 从 low 到 high 的元素(默认升序)【linit offset N,跳过 offset 个,取出N 个】
6.zrank key k 返回 k 的排名
7.zremrangebyrank key begin end 将key 中排名begin 到 end 元素删除
8.zcount key min max [在min - max ]区间的元素个数
~5.Resis 对 Hash 结构的操作
1. hset key field value 设置单个字段
2.hmset key f1 v1 f2 v2 设置多个字段与值
3.hget key field 查看单个字段值
4.hmget key f1 f2 fN 查看多个字段值
5.hgetall key 查询所有的域与值
6.hdel key field 删除field 域
7.hlen key 返回key的元素数量
8.hexists key field 判断是否存在字段field : 1存在 0 不存在
9. hkeys key 返回key中所有的field
三、redis 默认设置
1. 默认开启的数据库 16个
2.默认端口 6379
3. redis 事务
开启事务: multi
成功执行:exec
失败执行:discard
watch key1 key2 ... keyN
作用:监听key1 key2..keyN有没有变化,如果有变, 则事务取消
unwatch
作用: 取消所有watch监听
四、Redis 消费发布订阅-运维
1.订阅消息 subscribe news
2.发布消息 publish news
3.redis 快照持久化
redis.conf 配置文件从下到上:
60 秒内 10000 个key变化 则满足
5分钟内,10个key 的变化
导出文件 : dbfilename dump.rdb
Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项 save // 900内,有1条写入,则产生快照
save // 如果300秒内有1000次写入,则产生快照
save // 如果60秒内有10000次写入,则产生快照
(这3个选项都屏蔽,则rdb禁用) stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?
rdbcompression yes // 导出的rdb文件是否压缩
Rdbchecksum yes // 导入rbd恢复时数据时,要不要检验rdb的完整性
dbfilename dump.rdb //导出来的rdb文件名
dir ./ //rdb的放置路径
4. Redis 2.4 之后 aof 日志持久化
appendonly no # 是否打开 aof日志功能 appendfsync always # 每1个命令,都立即同步到aof. 安全,速度慢
appendfsync everysec # 折衷方案,每秒写1次
appendfsync no # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快, no-appendfsync-on-rewrite yes: # 正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage #aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写
注: 在dump rdb过程中,aof如果停止同步,会不会丢失?
答: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作.
注: aof重写是指什么?
答: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里.
以解决 aof日志过大的问题.
问: 如果rdb文件,和aof文件都存在,优先用谁来恢复数据?
答: aof
问: 2种是否可以同时用?
答: 可以,而且推荐这么做
问: 恢复时rdb和aof哪个恢复的快
答: rdb快,因为其是数据的内存映射,直接载入到内存,而aof是命令,需要逐条执行
Redis 总结的更多相关文章
- 使用redis构建可靠分布式锁
关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...
- Ignite性能测试以及对redis的对比
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...
- mac osx 安装redis扩展
1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- Redis数据库
Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...
- redis 学习笔记(2)
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...
- redis 学习笔记(1)
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...
- python+uwsgi导致redis无法长链接引起性能下降问题记录
今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...
随机推荐
- 自动化脚本编写环境部署_win7(RF)
第一步 安装Python并设置环境变量 1.安装python: python下载地址https://www.python.org/,建议用2.7.x版本 2.设置环境变量: 方法如下所示 第二步 安 ...
- Maven传递依懒
A依赖B,B依赖C.B是A的直接依赖,C是A的传递依赖. 1.Maven自己调解原则 先定义者优级先原则,谁先定义就用谁的传递依赖. 路径近者优级先原则,直接依赖级别高高于传递依赖. 2.排除依懒 & ...
- 10. eclipse在选中一个变量之后,怎样让所有相同的变量都有灰色背景显示
是在window->Preferences->Java->Editor->Mark Occurrences里面设置打钩就行了
- 转载:Bootstrap 源码解析
Bootstrap 源码解析 前言 Bootstrap 是个CSS库,简单,高效.很多都可以忘记了再去网站查.但是有一些核心的东西需要弄懂.个人认为弄懂了这些应该就算是会了.源码看一波. 栅格系统 所 ...
- Map 接口
1.键值对存储一组对象 2.key值不能重复,value可以重复 3.具体的实现类,HashMap,treeMap,HashTable,LinkedHashMap ------------------ ...
- Django的路由层详情
1. Django的路由解析: 是从上往下进行匹配的 url(r'index', views.index) #这里的index 解析都可以被解析到的, abcindex index indexabc ...
- GitHub创建个人主页
在GitHub,一个项目对应唯一的Git版本库,创建一个新的版本库就是创建一个新的项目.访问仪表板(Dashboard)页面,如图3-1,可以看 到关注的版本库中已经有一个,但自己的版本库为零.在显示 ...
- image 标签src
最近对接到前端 src需要填写 src= "data:image/jpg;base64,xxxxxxxooooooo"; 记录一下图片转换的问题,需要把图片转换成base64 ...
- FireDac 组件说明二
FDUpdateSQL 生成添加,删除,修改SQL语句 TFDMetaInfoQuery 查询数据源信息 TFDEventAlerter 负责处理数据库事件通知 使用TFDEventAlerter类来 ...
- 虚拟机安装centos6.6全步骤
1.首先要下载一个centos的iso镜像,我是用虚拟机VMware来安装的,用VMware最好创建一个空白硬盘. 2.创建完毕再设置里面挂载iso的centos系统文件. 3.进入到这个页面: 说明 ...