1、string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令
string命令操作
[root@localhost ~]# redis-cli
127.0.0.1:6379> APPEND k1 hello #该键并不存在,因此append命令返回当前Value的长度。
(integer) 5
127.0.0.1:6379> get k1 #通过get命令获取该键,以判断append的结果。
"hello"
127.0.0.1:6379> set k1 abc #将该键的Value设置为不能转换为整型的普通字符串。
OK
127.0.0.1:6379> get k1 #通过get命令获取该键,以判断append的结果。
"abc"
127.0.0.1:6379> APPEND k2 word #该键并不存在,因此append命令返回当前Value的长度。
(integer) 4
127.0.0.1:6379> MSET k1 hello k2 word #批量设置了k1和k2两个键。
OK
127.0.0.1:6379> mget k1 k2 #批量获取了k1和k2两个键的值。
1) "hello"
2) "word"
list命令操作
127.0.0.1:6379> del k1 #删除键
(integer) 1
#k1键并不存在,该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入。
127.0.0.1:6379> lpush k1 a b c d
(integer) 4
#取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
127.0.0.1:6379> lrange k1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> del k2
(integer) 1
#k2键此时并不存在,因此该命令将不会进行任何操作,其返回值为0。
127.0.0.1:6379> lpushx k2 e
(integer) 0
#k1键此时已经存在,所以该命令插入成功,并返回链表中当前元素的数量。
127.0.0.1:6379> lpush k1 -e
(integer) 5
hash命令操作
#给键值为user的键设置字段为name,值为jk。
127.0.0.1:6379> hset user name 'jk'
(integer) 1
#获取键值为user,字段为name的值。
127.0.0.1:6379> hget user name
"jk"
#为该键user1,一次性设置多个字段,
127.0.0.1:6379> hmset user1 name smith age 20
OK
#获取myhash键的多个字段
127.0.0.1:6379> hmget user1 name age
1) "smith"
2) "20"
#判断myhash键中是否存在字段名为field1的字段,由于不存在,返回值为0。
127.0.0.1:6379> hexists user age
(integer) 0
#判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。
127.0.0.1:6379> hexists user1 name
(integer) 1
#删除user键中字段名为name的字段,删除成功返回1。
127.0.0.1:6379> hdel user name
(integer) 1
#仅获取myhash键中所有字段的名字。
127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
2、举例说明list和hash的应用场景,每个至少一个场景
list应用场景
- 栈:LPUSH +LPOP -->FILO
先进后出原则:LPUSH从队列左边进入d,c,b,a, LPOP从队列左边出来a,b,c,d
- 队列: LPUSH+RPOP
先进先出原则:LPUSH从队列左边进入d,c,b,a, RPOP从队列右边出d,c,b,a
- 阻塞队列: LPUSH+BRPOP
LPUSH+BRPOP是在LPUSH+RPOP的基础上多了阻塞和等待的功能,
BRPOP实际上就是等于Blocking+RPOP,当队列中的数据为空时,会一直监听消息队列,直到获得消息
hash应用场景
购物车
以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素
3、配置redis的主从复制
主库:192.168.159.136
从库:192.168.159.138
主库
[root@localhost ~]# vim /etc/redis.conf
bind 192.168.159.136
从库
指定192.168.159.136为主库
[root@localhost ~]# vim /etc/redis.conf
# slaveof <masterip> <masterport>
slaveof 192.168.159.136 6379
主从库重启redis
[root@localhost ~]# systemctl restart redis
主库登录,info replication查看你信息,主库写入数据
[root@localhost ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.159.138,port=6379,state=online,offset=113,lag=0
master_repl_offset:113
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:112
127.0.0.1:6379> set a hello
OK
从库登录查看
[root@localhost ~]# redis-cli
127.0.0.1:6379> get a
"hello"