redis 命令使用
数据库类型列表
list列表操作命令
Redis的list是一个字符列队,先进后出,一个key可以有多个值(创建##查看)
0.0.0.0:6350> KEYS * 查看当前的变量 (list为列表类型、string为字符类型)
0.0.0.0:6350> lpush lvwenlong 1 2 3 4 5 6 7 8 9 ##创建变量
(integer) 9
0.0.0.0:6350> TYPE lvwenlong ##查看变量类型
list
0.0.0.0:6350> LRANGE lvwenlong 0 -1 ##输出变量里面的值
- “9”
- “8”
- “7”
- “6”
- “5”
- “4”
- “3”
- “2”
- "1“
Redis的list是一个字符列队,先进后出,一个key可以有多个值(查看##删除)
0.0.0.0:6350> LPOP lvwenlong ##删除变量
“9”
0.0.0.0:6350> LLEN lvwenlong ##查看变量内的个数
(integer) 8
0.0.0.0:6350> LRANGE lvwenlong 0 -1 ##查看变量发现9被移除了
- “8”
- “7”
- “6”
- “5”
- “4”
- “3”
- “2”
- “1”
Redis的list是一个字符列队,先进后出,一个key可以有多个值(查看列表的某一个值##修改)
0.0.0.0:6350> LINDEX lvwenlong 0 ##输出列表某一个值,0代表1,1代表2。。
“8”
0.0.0.0:6350> LSET lvwenlong 0 888 ##修改第一行的值为888
OK
0.0.0.0:6350> LRANGE lvwenlong 0 -1
- “888”
0.0.0.0:6350> lset lvwenlong 1 777 ##修改第二行的值为777
OK
0.0.0.0:6350> LRANGE lvwenlong 0 -1 - “888”
- “777”
Redis的list是一个字符列队,先进后出,一个key可以有多个值(插入一个值到key头##插入一个值到队尾)
0.0.0.0:6350> RPUSH lvwenlong 999 ##rpush,插入到变量尾
0.0.0.0:6350> LRANGE lvwenlong 0 -1
- “888”
- “777”
- “999”
0.0.0.0:6350> LPUSH lvwenlong 999 ##lrpush,插入到变量头
0.0.0.0:6350> LRANGE lvwenlong 0 -1 - “999”
- “888”
- “777”
- “999”
Redis的list是一个字符列队,先进后出,一个key可以有多个值(删除一个值到key头##删除一个值到队尾)
0.0.0.0:6350> LRANGE lvwenlong 0 -1 ##查看所有值
- “999”
- “888”
- “777”
- “6”
- “5”
- “4”
- “3”
- “2”
- “1”
- “999”
0.0.0.0:6350> RPOP lvwenlong ##删除队尾
“999”
0.0.0.0:6350> LRANGE lvwenlong 0 -1 - “999”
- “888”
- “777”
- “6”
- “5”
- “4”
- “3”
- “2”
- “1”
0.0.0.0:6350> LPOP lvwenlong ##删除队头
“999”
0.0.0.0:6350> LRANGE lvwenlong 0 -1 - “888”
- “777”
- “6”
- “5”
- “4”
- “3”
- “2”
- “1”
删除kyes ##
0.0.0.0:6350> del lvwenlong
(integer) 1
0.0.0.0:6350> KEYS *
- “sxz”
- “student”
- “x”
- “z”
- “class”
- “a”
- “s”
- “dcc”
数据类型hash
hash操作命令
0.0.0.0:6350> FLUSHALL ##清空所有key
OK
0.0.0.0:6350> KEYS *
(empty list or set)
0.0.0.0:6350> hset site baidu www.baidu.com ##创建一个值为site,hash类型
(integer) 1
0.0.0.0:6350> keys *
- “site”
0.0.0.0:6350> TYPE site
hash
0.0.0.0:6350> HGET site baidu ##查看site内得变量
“www.baidu.com”
0.0.0.0:6350> HMSET site jd jd.com ##存储一个变量
OK
0.0.0.0:6350> HMSET site tmall www.tmall.com sina www.sina.com jm www.jm.com ##存储多个
OK
0.0.0.0:6350> HMGET site tmall sina jd jm 查看多个值
- “www.tmall.com”
- “www.sina.com”
- “jd.com”
- “www.jm.com”
0.0.0.0:6350> keys * - “site”
0.0.0.0:6350> TYPE site
hash
0.0.0.0:6350> hkeys site ##查看变量内列名 - “baidu”
- “jd”
- “tmall”
- “sina”
- “jm”
0.0.0.0:6350> HVALS site ##列出所有值 - “www.baidu.com”
- “jd.com”
- “www.tmall.com”
- “www.sina.com”
- “www.jm.com”
0.0.0.0:6350> HGETALL site ##列出所有列名与值
- “baidu”
- “www.baidu.com”
- “jd”
- “jd.com”
- “tmall”
- “www.tmall.com”
- “sina”
- “www.sina.com”
- “jm”
- “www.jm.com”
0.0.0.0:6350> HGET site sina ##查看sina单个的变量
“www.sina.com”
0.0.0.0:6350> HGETALL site ##查看值内所有的变量
- “baidu”
- “www.baidu.com”
- “jd”
- “jd.com”
0.0.0.0:6350> HDEL site baidu jd ##删除值内的变量
(integer) 2
0.0.0.0:6350> del site ##删除hash类型的值
(integer) 1
0.0.0.0:6350> keys *
(empty list or set)
数据持久化RDB
目录位置/var/lib/redis/6379,名称默认为dump.rdb,配置文件可修改
数据持久化AOF
目录位置/var/lib/redis/6379,名称默认为appendonly.aof,配置文件可修改
redis主从复制
主从复制:是存储数据的服务结构
角色2种:
主服务器:接受客户端连接的服务器
从服务器:自动与主服务器保持数据一致的服务器
结构模式如下图
主从复制工作原理如下图
配置从服务器
==主服务器不用配置因为默认就是主服务器,查询角色信息命令
0.0.0.0:6350> info replication 只需要配置从就ok了
注意
指定主服务器分为两种方式:
命令行配置
命令行配置后立刻生效不用重启服务,但是一但服务重启后配置就立刻失效了
配置文件配置
- 安装好redis,修改配置文件70行,IP地址
- 永久配置//格式与命令行一样(在配置文件282行set nu)
取消注释,指定主服务器IP地址与端口号
反客为主
如果从服务器不想做从服务器了,有两种方式,命令行下临时修改,或者配置文件注释掉指定主的IP配置
- 命令行下输入:192.168.187.219:6379> SLAVEOF no one
OK - 再次查看:192.168.187.219:6379> info replication,发现已经不在是从服务器了,变成了主,如果在想变成从服务器,重新指定下主服务器IP地址以及端口号:192.168.187.219:6379> SLAVEOF 192.168.187.218 6379
再次查看又变成了从服务器,数据也已经进行了同步。
报错处理
报错(error) READONLY You can’t write against a read only slave.
处理命令行下输入:config set slave-read-only no
可以在配置文件修改配置文件
将配置文件redis.conf中的slave-read-only yes 把yes修改为no。
带验证的主从复制
主从复制也就是说是一主二从,从会同步主写入删除的数据,当从挂掉一台后另一台从依然会工作,当故障从恢复后会依然同步主写入的数据,原因是从的配置文件定义了主服务器,从开启服务后会自动同步主服务器数据
注意
如果修改配置文件后关闭redis命令是==[root@ntp1 ~]# redis-cli -h 192.168.187.174 -p 6379 -a 123456 shutdown== 因为修改过配置文件故之前停止的脚本的命令用不了==[root@ntp1 ~]# /etc/init.d/redis_6379 stop== 执行后就会报错
指定完主服务器一定也要指定主服务器密码,配置文件289行