NoSQL之redis主从复制、数据类型、应用场景

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,当队列中的数据为空时,会一直监听消息队列,直到获得消息

NoSQL之redis主从复制、数据类型、应用场景

 hash应用场景

购物车

以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素

NoSQL之redis主从复制、数据类型、应用场景

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"

上一篇:Linux(CentOS7)下搭建nacos集群,超详细


下一篇:时间轮的应用并非Kafka独有, 其应用场景还有很多,在Netty、 Akka、Quartz、ZooKeeper等组件中都存在时间轮的踪影。