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.3.tar.gz
$ cd redis-5.0.3
$ 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 的操作

1.  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 的生命周期(秒)

-1  永久有效
-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  最大: 512 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      // 900内,有1条写入,则产生快照 
save 300 1000   // 如果300秒内有1000次写入,则产生快照
save 60 10000  // 如果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 100 #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是命令,需要逐条执行

posted @ 2019-01-02 15:21  byebai95  阅读(316)  评论(0编辑  收藏  举报