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组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...
随机推荐
- 好久没玩docker了,温下手
好久没玩docker了,温下手 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum i ...
- hadoop hdfs 元数据 journalnode editslog fsimage
先上图,文章以后再上 截图有先后 所以有些延迟,但是不耽误总体的理解(active-nn=a-nn=active-namenode; s-nn=standby-nn=standby-namenode; ...
- UI学习网站
以下是我收集的UI设计的网站提供给大家参考: 站酷 www.zcool.com.cn UI中国 www.ui.cn 学UI网 www.xueui.cn UIGREAT www.uigreat.com ...
- opencv-3.3安装记录-ubuntu 14.04
这个二逼问题不会是最后一次. ipcv-****.tar.gz 这个文件在cmake的时候会卡住,这里先下载这个文件,大概38M,放到.cache/ippcv目录下就可以了.貌似还需要改下名字. 就可 ...
- CC攻击与DDOS攻击区别
二者的攻击方式主要分为三种:直接攻击.代理攻击.僵尸网络攻击 CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些.这种攻击你见不到虚假IP,见不到特别大的异常流 ...
- 扩展saltstack组件
一.扩展Grains 我们知道,grains可以帮助收集minion端的静态信息.在更为复杂的业务环境中,可以使用自定义的grains帮助收集真实需要的静态或者业务信息; grains流程: mas ...
- 如何查看Python对象的属性
在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...
- iphone上实现H264 硬编码
供ios下h264硬编码sdk,可以生成h264流. 我们的H264 SDK提供了一个理想的软件开发工具包,使您的app可以在iPhone或iPod上实时的访问H264帧数据.SDK提供了一套API功 ...
- 生成一个文件夹中的所有文件的txt列表
1.windows操作系统中 1.用管理员运行打开dos界面: 2.用cd转到相应的文件夹中: 3.用dir /b /on >list.txt来生成文件列表的txt. 2.Mac系统中 1.打开 ...
- CSS 边框图像
border-image border-image 可以将图像应用到盒子的边框上. border-image 属性需要3个值同时存在: URL 图片的地址 切割图片的位,4个边需要写4个值 如何处理边 ...