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 总结的更多相关文章

  1. 使用redis构建可靠分布式锁

    关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...

  2. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  3. mac osx 安装redis扩展

    1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis   ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...

  4. Redis/HBase/Tair比较

    KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...

  5. Redis数据库

    Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...

  6. redis 学习笔记(2)

    redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...

  7. redis 学习笔记(1)

    redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...

  8. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

  9. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  10. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

随机推荐

  1. 好久没玩docker了,温下手

    好久没玩docker了,温下手 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum i ...

  2. hadoop hdfs 元数据 journalnode editslog fsimage

    先上图,文章以后再上 截图有先后 所以有些延迟,但是不耽误总体的理解(active-nn=a-nn=active-namenode; s-nn=standby-nn=standby-namenode; ...

  3. UI学习网站

    以下是我收集的UI设计的网站提供给大家参考: 站酷 www.zcool.com.cn UI中国 www.ui.cn 学UI网 www.xueui.cn UIGREAT www.uigreat.com ...

  4. opencv-3.3安装记录-ubuntu 14.04

    这个二逼问题不会是最后一次. ipcv-****.tar.gz 这个文件在cmake的时候会卡住,这里先下载这个文件,大概38M,放到.cache/ippcv目录下就可以了.貌似还需要改下名字. 就可 ...

  5. CC攻击与DDOS攻击区别

    二者的攻击方式主要分为三种:直接攻击.代理攻击.僵尸网络攻击 CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些.这种攻击你见不到虚假IP,见不到特别大的异常流 ...

  6. 扩展saltstack组件

    一.扩展Grains 我们知道,grains可以帮助收集minion端的静态信息.在更为复杂的业务环境中,可以使用自定义的grains帮助收集真实需要的静态或者业务信息; grains流程:  mas ...

  7. 如何查看Python对象的属性

    在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...

  8. iphone上实现H264 硬编码

    供ios下h264硬编码sdk,可以生成h264流. 我们的H264 SDK提供了一个理想的软件开发工具包,使您的app可以在iPhone或iPod上实时的访问H264帧数据.SDK提供了一套API功 ...

  9. 生成一个文件夹中的所有文件的txt列表

    1.windows操作系统中 1.用管理员运行打开dos界面: 2.用cd转到相应的文件夹中: 3.用dir /b /on >list.txt来生成文件列表的txt. 2.Mac系统中 1.打开 ...

  10. CSS 边框图像

    border-image border-image 可以将图像应用到盒子的边框上. border-image 属性需要3个值同时存在: URL 图片的地址 切割图片的位,4个边需要写4个值 如何处理边 ...