redis 非关系数据库加基本命令和数据类型
准备工作:首先安装图形化界面,
我这里安装包为redisplus-3.0.1-exe-x86_64.exe,如有需要可去官网下载
1.配置
这里默认redis不允许远程连接,所以我们必须改成可允许,如下:
使用vim redis.conf编辑
2.图形化连接(图形化很简单,这里就不再做介绍,直接在xshell里边输入命令)
2.基本命令
(1)启动redis(要保证在后台运行)
一定要关闭防火墙
systemctl stop firewalld.service
(2) 基本命令
代码如下:
[root@localhost ~]# cd /usr/local/redis-5.0.8
[root@localhost redis-5.0.8]# systemctl stop firewalld.service
[root@localhost redis-5.0.8]# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> expire k2 100
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 93
127.0.0.1:6379> ttl k2
(integer) 71
127.0.0.1:6379> ttl k2
(integer) 37
127.0.0.1:6379> ttl k2
(integer) 2
127.0.0.1:6379> ttl k2
(integer) -2
(2)对数据库进行操作 (一般默认有16个数据库)
select index:选择数据库
flushdb:清空当前所在的库
flushall:清空所有的库
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> keys *
- “k2”
- “k1”
127.0.0.1:6379> get k1
“v1”
127.0.0.1:6379> get k2
“v2”
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> expire k2 100
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 93
127.0.0.1:6379> ttl k2
(integer) 71
127.0.0.1:6379> ttl k2
(integer) 37
127.0.0.1:6379> ttl k2
(integer) 2
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379>
[root@localhost redis-5.0.8]# redis-cli
127.0.0.1:6379> clear
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set k2 v2
OK
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]> set k3 v3
OK
127.0.0.1:6379[2]> keys * - “k3”
127.0.0.1:6379[2]> flushdb
OK
127.0.0.1:6379[2]> keys *
(empty list or set)
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> keys * - “k2”
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)
String类型
(1) mset: mset key value [key value …]
(2) mget: mget key [key …]
(3) setnx: setnx key value
(4) incr:incr key
(5) decr:decr key
setnx是比较特殊的一种,它表示如果设置的值已经存在,则会显示之前设置的值,而不会覆盖,若是值不存在,则会设置新的key和value值
代码如下:
127.0.0.1:6379> mset k1 1 k2 2 k3 3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> setnx k3 4
(integer) 0
127.0.0.1:6379> get k3
"3"
127.0.0.1:6379> setnx k4 4
(integer) 1
127.0.0.1:6379> get k4
"4"
127.0.0.1:6379> incr k4
(integer) 5
127.0.0.1:6379> incr k4
(integer) 6
127.0.0.1:6379> incr k4
(integer) 7
127.0.0.1:6379> decr k4
(integer) 6
127.0.0.1:6379> decr k4
(integer) 5
127.0.0.1:6379> decr k4
(integer) 4
List列表数据,值为列表
(1) lpush:lpush key value [value …]
(2) lrange:lrange key start stop
(3) lpop:key
(4) rpop:key
代码如下:
127.0.0.1:6379> lpush k1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange k1 0 4
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lpop k1
"5"
127.0.0.1:6379> lrange k1 0 4
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> rpop k1
"1"
127.0.0.1:6379> lrange k1 0 4
1) "4"
2) "3"
3) "2"
hash散列数据类型 value的值为 map数据结构
(1)hset:hset key field value
(2)hget:hget key field
(3)hkeys:hkeys key
(4)hvals:hvals key
(5)hgetall:hgetall key
(6)hdel:hdel key field [field …]
127.0.0.1:6379> hset k1 name zs
(integer) 1
127.0.0.1:6379> hset k1 sex nv
(integer) 1
127.0.0.1:6379> hset k1 age 18
(integer) 1
127.0.0.1:6379> hget k1 name
"zs"
127.0.0.1:6379> hkeys k1
1) "lisrt"
2) "name"
3) "sex"
4) "age"
127.0.0.1:6379> hvals k1
1) "1"
2) "zs"
3) "nv"
4) "18"
127.0.0.1:6379> hgetall k1
1) "lisrt"
2) "1"
3) "name"
4) "zs"
5) "sex"
6) "nv"
7) "age"
8) "18"
127.0.0.1:6379> hdel k1 sex nv
(integer) 1
127.0.0.1:6379> hgetall k1
1) "lisrt"
2) "1"
3) "name"
4) "zs"
5) "age"
6) "18"
set集合:value类型为集合类型,值不能重复
(1)sadd:sadd key member [member …
(2)smembers:smembers key
(3)sinter:sinter key [key …]
(4)sunion:sunion key [key …]
(5)spop:spop key [count]
sorted set 有序集合类型
它和set的区别就是增加了一个新的score字段
(1)zadd:zadd key [NX|XX] [CH] [INCR] score member [score member …]
(2)zrange:zrange key start stop [WITHSCORES]
(3)zrevrange:zrevrange key start stop [WITHSCORES]
二、redis集群+持久化
小贴士:开启redis后台启动
vim redis.conf
一、持久化方式(两种)
redis持久化方式分为两种,分别是RDB和
1.RDB持久化
rdb一般默认为dump.rdb,而pdb的触发方式一般有三种
(1)save触发
(2)bgsave触发
save和bgsave区别
save命令执行的是同步保存操作,会阻塞当前Redis服务器,执行命令期间不能执行其他命令,直到RDB过程完成为止。bgsave执行该命令时,Redis会在后台异步进行快照操作,再执行期间,还能执行其他命令。
(3)配置文件触发
通过vim redis.conf命令可以设配置文件
2.AOF持久化方式
默认没有开启,需要手动配置启动
手动配置触发条件
当用set或mset命令进行写的操作是会根据你配置的aof触发类型自动放入appendonly.aof文件
查看aof命令
[root@localhost redis-5.0.8]# cat appendonly.aof
二、redis的集群
搭建redis主从关系
配置主从关系(80主,81和82都是从)
先在redis下边新建一个主从文件夹
mkdir masterSlave
复制三份redis.conf到masterSlave文件夹,并命名为80,81,82
利用vim进入到刚复制的三个redis.conf,并更改相对应的port(这里以80为例,其他一样,就不一一截图了)(只需更改两处即可)
(1)port更改
(2)修改rdb文件路径
启动端口不同的redis
分别连接不同的redis服务
(1)使三个主从文件同时进入masterSlave文件夹
cd /usr/local/redis-5.0.8/masterSlave/
(2)利用下面命令进行连接
redis-cli -p 端口号
(3)查看三个redis关系
查看命令
info replication
其他两个的关系从属都是master,这里可以看出此时这三个没有任何主从关系。这里就不一一截图了
(4)设置主从关系(80主,81和82从)
slaveof 地址 端口号
81
82
80(主)
三、搭建哨兵模式
配置哨兵(一般默认在sentinel.conf文件)
在80(主)中利用vim sentinel.conf命令更改配置文件
启动哨兵
让80宕机进行测试
shutdown
80(已经宕机后的结果)
81(从)
82(已经成为“主”)
要想让80回来,必须重新启动,但即使回来也只能成为“从"
redis-server redis6380.conf
四、redis集群搭建—去中心化
配置三主三从(1为主,2为从)
分别为
7001 7002
8001 8002
9001 9002
(1)创建文件夹
[root@localhost redis-5.0.8]# mkdir redisCluster
[root@localhost redis-5.0.8]# cp redis.conf redisCluster/
[root@localhost redis-5.0.8]# cd redisCluster/
(2)复制文件并更改以下内容
利用vim 命令编辑以下内容(这里以7001为例其他只需把7001改成相对应数据就行)
port 7001
daemonize yes
dbfilename dump7001.rdb
appendonly yes 必须有aof持久化
appendfilename “appendonly7001.aof”
开启集群
cluster-enabled yes
集群的配置文件,该文件自动生成
cluster-config-file nodes-7001.conf
创建文件有以下:
(3)把上边配置六个文件全启动(以7001为例)
[root@localhost redisCluster]# redis-server redis7001.conf
查看启动状态
redis分配主从关系以及槽
redis-cli --cluster create --cluster-replicas 1 192.168.253.3:7001 192.168.253.3:8001 192.168.253.3:9001 192.168.253.3:7002 192.168.253.3:8002 192.168.253.3:9002
客户端访问:
redis-cli -c -h 127.0.0.1 -p 7001
必须保证aof开启,保证redis中没有数据。