Redis基础回顾——Redis的数据操作命令、主从复制

Redis基础知识

  1. redis是单进程模型处理客户端请求
  2. 默认16个数据库

  选择切换第2个库:输入: select 1

  1. Dbsize 查看当前库的key数量
  2.  keys * 列出所有key

    Keys  k? 就像正则表达式,列出k开头的key

  1. FLUSHDB 清空当前数据库所有key

   FLUSHALL 清空所有数据库的key

  1. Redis索引都是从零开始,默认端口6379
  2. 数据类型

     String类型二进制安全的,可以是任何数据,包括图片或序列化的对象,理论最大支持512M

DEL name 删除

append  name  111  由张三变成zhangsan111

STRLEN name  则显示name的值zhangsan111的strlen是11

值是数字,则可加减 ,必须是数字

Incr 、decr、incrby、decrby

127.0.0.1:6379> set k2 10

OK

127.0.0.1:6379> set k3 v3

OK

127.0.0.1:6379> incr k2

(integer) 11

127.0.0.1:6379> incr k2

(integer) 12

127.0.0.1:6379> decr k2

(integer) 11

127.0.0.1:6379> decr k2

(integer) 10

127.0.0.1:6379> incrby k2 3

(integer) 13

127.0.0.1:6379> incrby k2  5

(integer) 18

127.0.0.1:6379> decrby k2 4

(integer) 14

127.0.0.1:6379> decrby k2 1

(integer) 13

Getrange和setrange

127.0.0.1:6379> set k3 abc123abc

OK

127.0.0.1:6379> get k3

"abc123abc"

127.0.0.1:6379> getrange k3 2 6

"c123a"

127.0.0.1:6379> setrange k3 2 666

(integer) 9

127.0.0.1:6379> get k3

"ab6663abc"   

setex (即是set with expire的意思) 键秒 ,setnx(set if not exit)  

  127.0.0.1:6379> setex k4 10 vaaa123

OK

mset 、mget、 msetnx

127.0.0.1:6379> mset k3 v3 k4 v4

OK

127.0.0.1:6379> mget k3 k4

1) "v3"

2) "v4"

127.0.0.1:6379> msetnx k3 v33 k4 v44 k5 v55

(integer) 0

127.0.0.1:6379> mget k3 k4 k5

1) "v3"

2) "v4"

3) (nil)

127.0.0.1:6379> msetnx k4 v44 l5 v55

(integer) 0

127.0.0.1:6379> msetnx k5 v55 k6 v66

(integer) 1

127.0.0.1:6379> mget k5 k6

1) "v55"

2) "v66"

127.0.0.1:6379>

Hash类型:类似java的mapObject>,是一个键值对集合,hash是一个String类型的field和value的映射表,适合存储对象

     List类型

     Set集合类型 String类型的无序集合,通过HashTable实现

     Zset类型(sorted set :有序不可重复集合,带有可重复的double类型的分数)

常见数据类型操作命令:http://redisdoc.com

  1. NoSQL的数据操作指令

  Key关键字

Keys *

move name 2 将name键值对剪切到2数据库

Select 2

get name

clear 回到原来的指令状态

ttl name 查询name多久过期,-1则永不过期,-2已过期

EXPIRE name 10  设置name将10s过期

type name 查看name是什么类型

  1. Redis的发布订阅

  发布订阅是进程间的一种消息通信模式:发送者发送消息,订阅者接收消息,实际上很少用redis做发布订阅

不过redis的主要应用是分布式数据缓存

订阅多个(c1、c2、c3): subscribe c1、c2、c3

消息发布:publish c2 hello  向 c2发送消息hello

订阅多个,通配符*,psubscribe new*

收取消息,publish new1 messagenew1

  1. Redis的复制机制

  也就是主从(master 、slave)复制,主机数据更新后根据配置和策略自动同步到备份的master/slaver机制,Master以写为主,slaver以读为主

  从而能实现读写分离、容灾恢复

使用:

  1. 配从不陪主
  2. 从库配置:slaveof主库IP主库端口
  3. 修改配置文件细节操作

拷贝多个redis.conf文件

开启daemonize yes

Pid文件名字,修改端口

指定duank

Log文件名字

Dump.rdp名字

  1. 常用三招

一主二仆

薪火相传

反客为主

哨兵模式

  Info replication 该命令查看主从角色信息

  一主二从:(中心化,主机负担重)在从机上 SLAVEOF 127.0.0.1 6380 设置127.0.0.1 6380为它的主机,主机的数据备份到从机,从机不可对数据进行更新。主机出现故障,从机的角色不变,还是从机。

主机恢复后,恢复正常。从机故障,故障期间更新的数据,在故障恢复后,故障恢复后的从机数据并没有更新备份,因此,每次从机与master主机断开后都要重新连接,即重新执行SLAVEOF 127.0.0.1 6380建立连接

  薪火相传:(去中心化,减轻主机负担,但有复制延时),上一个slave是下一个slave的master,从机的角色还是slave,只不过不过会有连接的从机

  反客为主: 原来的主机故障,从机中会有新主机。SLAVEOF no one(该指令使当前数据库成为主数据库) ,其余从机,与新主机建立连接。原来的主机恢复后,故障期间新主机产生的更新数据原主机不会有

  哨兵模式:sentinel ,(复制延迟)可以说是自动版的反客为主 ,slave启动成功后会发送一个sync命令,master接到后会在后台进程执行完毕后将数据文件传送到slave,完成同步。全量复制(一般首次是全量复制)和增量复制(主机数据更新后从机跟着复制更新的部分),但如果是重连master,都会执行全量复制。主机出现故障后会在从机选出新主机,当主机恢复正常后就变成新主机的从机

在conf文件目录下新建sentinel.conf文件 touch sentinel.conf

配置sentinel.conf:如 sentinel monitor host6379 127.0.0.1 6379 1   (1表示自动投票选出主机)

保存文件,启动哨兵:如:redis-sentinel  /redis/sentinel.conf

你可能感兴趣的:(开发笔记,数据库设计及优化)