聊聊Redis入门

redis是什么:

redis是开源,BSD许可,高级的key-value存储系统.

可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务

redismemcached相比,的独特之处:

1: redis可以用来做存储(storge),memccached是用来做缓存(cache)

  这个特点主要因为其有持久化的功能.

2: 存储的数据有结构”,对于memcached来说,存储的数据,只有1种类型--字符串”,

  redis则可以存储字符串,链表,哈希结构,集合,有序集合

reids的安装我在前面的文章里有说过。



上面我们就完成了reids的安装。下面我们就来开始启动下redis服务。

在解压的redis文件中src下。执行:  ./redis-server ../redis-conf 。启动redis服务:

1 、设置成后台执行后,如何关闭?

关闭redis服务:pkill -9 redis杀死所有与redis有关的进程

关闭客户端:quit 命令就可以

2、第一次外部网络连接的时候,可能会出现链接失败,原因是防火墙原因,端口没有开放

 Centos7.我使用的是iptables-service

修改配置:./etc/sysconfig/iptables文件,

vi iptabls   添加:-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT

然后 :wq 保存退出

3redis客户端链接redis服务

   redis-cli    bin/redis-cli [-h localhost -p 6379 ]

4redis默认有16个库,切换使用命令select n。可以通过修改配置文件来修库的个数

Redis可以保存的数据结构大致可以分为5中

    1、字符串 、//算是数据结构

    2、链表结构 -->link表-->操作命令l或者r开头如lpush key value

    3、无序集合-->set集合---操作命令s开头如sadd key value

    4、有序集合--->list集合---操作命令z开头如zadd key sorce value

    5、hash结构 -->   ---->操作命令h开头 如hset key field value

----------------------------------------------------------------------------------------------------------------------

-------------------------------------------Redis中的事务------------------------------------------------------------

支持简单的事务:

如图:


同时也可以取消事务:discard

但是这里的取消并不能和mysql中的rollback回滚一样

如果已经成功执行了2条语句,3条语句出错.

Rollback,2条的语句影响消失.

Discard只是结束本次事务,2条语句造成的影响仍然还在

multi命令之后,后面的命令都会返回一个QUEUED,但是如果中间出现错误如

1、语法错误


2、语法没有错,但是适用对象有错,也就是执行的时候会出错,


这一点只能有程序员自己保证了。

Redis中的事务启用的是乐观锁,就是:只负责监测key是不是被改动。如果被改动,那么事务提交就会出错,被取消。如果没有那么事务就会提交成功执行命令。

启用命令是:watch key key1 key2 .....


记得最后要unwatch .关闭下watch

watch key1 key2  ... keyN

作用:监听key1 key2..keyN有没有变化,如果有变,则事务取消

unwatch

作用:取消所有watch监听

------------------------------------------Redis的持久化配置----------------------------------------------------

持久化: 即把数据存储于断电后不会丢失的设备中,通常是硬盘

reids有两种持久化方式:1、快照---rdb文件 2、日志---aof文件

1、rdb

每隔N分钟或N次写操作后, 从内存dump数据形成rdb文件,压缩放在备份目录

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的放置路径

rdb的缺点是:如果在两个保存点 60s和300s之间断电,那么这时我们就会丢失几分钟的数据

为了解决这个问题,redis提供了更加精细化的处理 append only file aof方式

2、AOF

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日志过大的问题.

(逆化成命令:就是将redis中最终的key值,直接set,去掉了中间的各种操作如增1,修改啊,直接set成最终值)

: 如果rdb文件,aof文件都存在,优先用谁来恢复数据?

: aof

: 2种是否可以同时用?

: 可以,而且推荐这么做

: 恢复时rdbaof哪个恢复的快

: rdb,因为其是数据的内存映射,直接载入到内存,aof是命令,需要逐条执行

-------------------------------手动执行生成rdb、aof命令----------------------------

BGREWRITEAOF 后台进程重写AOF  (bgrewriteaof)

BGSAVE       后台保存rdb快照 (bgsave)

SAVE         保存rdb快照 (save)--会阻塞主线程

LASTSAVE     上次保存时间 (lastsave)

如果redis服务宕机之后,重启时,就会从配置文件中的路径中读取所配置的rdb文件和aof文件

恢复数据。以aof为准

不同redis服务之间迁移数据,我们可以将rdb文件或者aof复制迁移过去,放到指定路径下改为指定名称

重启即可。

--------------------------------------Redis运维命令----------------------------------------------------

Flushall  清空所有库所有键

Flushdb  清空当前库所有键

Shutdown [save/nosave] //默认shutdownsave。直接dump

: 如果不小心运行了flushall, 立即 shutdown nosave ,关闭服务器

然后 手工编辑aof文件, 去掉文件中的 flushall 相关行, 然后开启服务器,就可以导入回原来数据.

如果,flushall之后,系统恰好bgrewriteaof,那么aof就清空了,数据丢失.

Slowlog 显示慢查询

:多慢才叫慢?

: slowlog-log-slower-than 10000 ,来指定,(单位是微秒)

服务器储存多少条慢查询的记录?

:  slowlog-max-len 128 ,来做限制

--------------------------------------redis集群-----------------------------------------------




猜你喜欢

转载自blog.csdn.net/try_harder_every_day/article/details/80266852