实验环境
一台Redis主机:192.168.8.8
将软件包拖入/data/soft中
mkdir -p /data/soft
cd /data/soft/
mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
cd /data/soft/
解压至/opt/redis_cluster/
tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
创建链接
ln -s /opt/redis_cluster/redis-5.0.7/ /opt/redis_cluster/redis
进入此目录查看
cd /opt/redis_cluster/
ll
yum -y install gcc gcc-c++(选装)
进入 /opt/redis_cluster/redis进行编译安装
cd /opt/redis_cluster/redis
make && make install
编辑redis配置文件
vim /opt/redis_cluster/redis_6379/conf/6379.conf
bind 127.0.0.1 192.168.8.8
port 6379
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照
appendonly yes
appendfilename "redis.aof"
appendfsync everysec
开启此服务
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
查看端口状态
netstat -anpt | grep redis
键(Key)相关命令
-
SET key value:设置指定键的值。
-
示例:
SET name "John"
,将键name
的值设置为John
。 -
GET key:获取指定键的值。
-
示例:
GET name
,返回键name
的值John
。 -
DEL key [key ...]:删除一个或多个键。
-
示例:
DEL name
,删除键name
。 -
EXISTS key:检查指定的键是否存在。
-
示例:
EXISTS name
,如果键name
存在,返回1
;否则,返回0
。 -
TTL key:获取键的剩余生存时间,以秒为单位。
-
示例:
TTL name
,假设name
键设置了过期时间,返回剩余的秒数;如果没有设置过期时间,返回-1
。
字符串(String)相关命令
-
STRLEN key:获取字符串值的长度。
-
示例:
STRLEN name
,返回键name
对应字符串值的长度,如John
的长度为4
。
-
-
INCR key:将键的值递增
1
。如果键不存在,会先将其初始化为0
再执行递增操作。-
示例:
INCR counter
,假设counter
键原来的值为5
,执行后变为6
;如果counter
不存在,执行后变为1
。
-
-
DECR key:将键的值递减
1
。如果键不存在,会先将其初始化为0
再执行递减操作。-
示例:
DECR counter
,假设counter
键原来的值为5
,执行后变为4
;如果counter
不存在,执行后变为-1
。
-
-
APPEND key value:将指定的字符串值追加到键原来的值后面。如果键不存在,会创建一个新的键值对。
-
示例:
APPEND name " Doe"
,假设name
键原来的值为John
,执行后变为John Doe
。
-
列表(List)相关命令
-
LPUSH key value [value ...]:将一个或多个值插入到列表的头部(左边)。
-
示例:
LPUSH mylist "apple" "banana" "cherry"
,将apple
、banana
、cherry
依次插入到列表mylist
的头部。
-
-
RPUSH key value [value ...]:将一个或多个值插入到列表的尾部(右边)。
-
示例:
RPUSH mylist "date" "elderberry"
,将date
和elderberry
插入到列表mylist
的尾部。
-
-
LPOP key:移除并返回列表头部的第一个元素。
-
示例:
LPOP mylist
,返回列表mylist
头部的元素,如apple
,并将其从列表中移除。
-
-
RPOP key:移除并返回列表尾部的最后一个元素。
-
示例:
RPOP mylist
,返回列表mylist
尾部的元素,如elderberry
,并将其从列表中移除。
-
-
LRANGE key start stop:获取列表中指定范围内的元素。索引从
0
开始,-1
表示最后一个元素。-
示例:
LRANGE mylist 0 2
,返回列表mylist
中索引从0
到2
的元素,即banana
、cherry
、date
。
-
集合(Set)相关命令
-
SADD key member [member ...]:将一个或多个成员添加到集合中。
-
示例:
SADD myset "apple" "banana" "cherry"
,将apple
、banana
、cherry
添加到集合myset
中。
-
-
SREM key member [member ...]:从集合中移除一个或多个成员。
-
示例:
SREM myset "banana"
,从集合myset
中移除banana
。
-
-
SMEMBERS key:返回集合中的所有成员。
-
示例:
SMEMBERS myset
,返回集合myset
中的所有元素,如apple
、cherry
。
-
-
SISMEMBER key member:检查成员是否在集合中。
-
示例:
SISMEMBER myset "apple"
,如果apple
在集合myset
中,返回1
;否则,返回0
。
-
哈希(Hash)相关命令
-
HSET key field value:为哈希表中的指定字段设置值。
-
示例:
HSET myhash "name" "John" "age" "30"
,在哈希表myhash
中设置name
字段为John
,age
字段为30
。
-
-
HGET key field:获取哈希表中指定字段的值。
-
示例:
HGET myhash "name"
,返回哈希表myhash
中name
字段的值John
。
-
-
HDEL key field [field ...]:删除哈希表中的一个或多个字段。
-
示例:
HDEL myhash "age"
,从哈希表myhash
中删除age
字段。
-
-
HGETALL key:返回哈希表中的所有字段和值。
-
示例:
HGETALL myhash
,返回哈希表myhash
中的所有字段和值,如name
为John
。
-
有序集合(Sorted Set)相关命令
-
ZADD key score member [score member ...]:将一个或多个成员及其分数添加到有序集合中。
-
示例:
ZADD myzset 10 "apple" 20 "banana" 30 "cherry"
,将apple
、banana
、cherry
添加到有序集合myzset
中,分数分别为10
、20
、30
。
-
-
ZRANGE key start stop [WITHSCORES]:获取有序集合中指定范围内的成员。如果使用
WITHSCORES
选项,还会返回成员的分数。-
示例:
ZRANGE myzset 0 2 WITHSCORES
,返回有序集合myzset
中索引从0
到2
的成员及其分数,如apple
的分数为10
,banana
的分数为20
,cherry
的分数为30
。
-
-
ZREM key member [member ...]:从有序集合中移除一个或多个成员。
-
示例:
ZREM myzset "apple"
,从有序集合myzset
中移除apple
。
-
-
ZSCORE key member:获取有序集合中指定成员的分数。
-
示例:
ZSCORE myzset "banana"
,返回banana
在有序集合myzset
中的分数20
-
登录redis
redis-cli
使用IP登录
redis-cli -h 192.168.8.8
[root@node13 redis]# redis-cli -h 192.168.8.8
192.168.8.8:6379> keys *
(empty list or set)
192.168.8.8:6379> set k1 1
OK
192.168.8.8:6379> keys *
1) "k1"
192.168.8.8:6379> mset k2 2 k3 3 k4 4 k5 5 k6 6
OK
192.168.8.8:6379> keys *
1) "k5"
2) "k1"
3) "k2"
4) "k3"
5) "k6"
6) "k4"
192.168.8.8:6379> get k1
"1"
192.168.8.8:6379> mget k1 k2 k3 k4 k5 k6
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
192.168.8.8:6379> type k1
string
192.168.8.8:6379> dbsize
(integer) 6
192.168.8.8:6379> exists k1
(integer) 1
192.168.8.8:6379> exists k2
(integer) 1
192.168.8.8:6379> exists k100
(integer) 0
192.168.8.8:6379> set k1 1000
OK
192.168.8.8:6379> get k1
"1000"
192.168.8.8:6379> ttl k1
(integer) -1
192.168.8.8:6379> expire k1 20
(integer) 1
192.168.8.8:6379> ttl k1
(integer) 11
192.168.8.8:6379> ttl k1
(integer) 9
192.168.8.8:6379> ttl k1
(integer) 6
192.168.8.8:6379> ttl k1
(integer) 4
192.168.8.8:6379> ttl k1
(integer) 3
192.168.8.8:6379> ttl k1
(integer) 0
192.168.8.8:6379> set k1 1
OK
192.168.8.8:6379> expire k1 20
(integer) 1
192.168.8.8:6379> ttl k1
(integer) 11
192.168.8.8:6379> ttl k1
(integer) 8
192.168.8.8:6379> ttl k1
(integer) 4
192.168.8.8:6379> ttl k1
(integer) 3
192.168.8.8:6379> ttl k1
(integer) 3
192.168.8.8:6379> ttl k1
(integer) 1
192.168.8.8:6379> ttl k1
(integer) -2
192.168.8.8:6379> ttl k1
(integer) -2
192.168.8.8:6379> del k6
(integer) 1
192.168.8.8:6379> keys *
1) "k5"
2) "k2"
3) "k3"
4) "k4"
192.168.8.8:6379> get k1
(nil)
192.168.8.8:6379> set k1 1
OK
192.168.8.8:6379> get k1
"1"
192.168.8.8:6379> incr k1
(integer) 2
192.168.8.8:6379> incr k1
(integer) 3
192.168.8.8:6379> incr k1
(integer) 4
192.168.8.8:6379> incr k1
(integer) 5
192.168.8.8:6379> incr k1
(integer) 6
192.168.8.8:6379> get k1
"6"
192.168.8.8:6379> incrby k1 10
(integer) 16
192.168.8.8:6379> incrby k1 10
(integer) 26
192.168.8.8:6379> incrby k1 100
(integer) 126
192.168.8.8:6379> rpush list1 2 3 4
(integer) 3
192.168.8.8:6379> rpush list 1 2 3 4
(integer) 5
192.168.8.8:6379> lrange list1 0 -1
1) "2"
2) "3"
3) "4"
192.168.8.8:6379> rpush list1 5 6 7 8
(integer) 7
192.168.8.8:6379> lrange list1 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
192.168.8.8:6379> lpush list1 0
(integer) 8
192.168.8.8:6379> lrange list1 0 -1
1) "0"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
192.168.8.8:6379> lrange list1 0 2
1) "0"
2) "2"
3) "3"
192.168.8.8:6379> lrange list1 0 0
1) "0"
192.168.8.8:6379> rpop list1
"8"
192.168.8.8:6379> lrange list1 0 -1
1) "0"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
192.168.8.8:6379> lpop list1
"0"
192.168.8.8:6379> lrange list1 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
192.168.8.8:6379> lrange list1 0 2
1) "2"
2) "3"
3) "4"
192.168.8.8:6379> lrange list1 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
192.168.8.8:6379> lrange list1 0 1
1) "2"
2) "3"
192.168.8.8:6379> hmset user:1000 username zhangsan age 17 job it
OK
192.168.8.8:6379> user:100 username
(error) ERR unknown command `user:100`, with args beginning with: `username`,
192.168.8.8:6379> hmget user:1000 username
1) "zhangsan"
192.168.8.8:6379> hmget user:1000 username age
1) "zhangsan"
2) "17"
192.168.8.8:6379> hmget user:1000 username age job
1) "zhangsan"
2) "17"
3) "it"
192.168.8.8:6379> hmset user:1000 tel 16666666
OK
192.168.8.8:6379> hmget user:1000 username age job tel
1) "zhangsan"
2) "17"
3) "it"
4) "16666666"
192.168.8.8:6379> type user:1000
hash
192.168.8.8:6379> sadd set1 1 2 3 4
(integer) 4
192.168.8.8:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
192.168.8.8:6379> lrange list1 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
192.168.8.8:6379> lpush list1 3 2 1
(integer) 9
192.168.8.8:6379> lrange list1 0 -1
1) "1"
2) "2"
3) "3"
4) "2"
5) "3"
6) "4"
7) "5"
8) "6"
9) "7"
192.168.8.8:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
192.168.8.8:6379> sadd set1 1 2 3 4
(integer) 0
192.168.8.8:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
192.168.8.8:6379> sadd set1 5
(integer) 1
192.168.8.8:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
192.168.8.8:6379> sadd set2 3 4 5 6 7
(integer) 5
192.168.8.8:6379> SMEMBERS set2
1) "3"
2) "4"
3) "5"
4) "6"
5) "7"
192.168.8.8:6379> sdiff set1 set2
1) "1"
2) "2"
192.168.8.8:6379> sinter set1 set2
1) "3"
2) "4"
3) "5"
192.168.8.8:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
关闭redis服务(暂时不关)
redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
vim /opt/redis_cluster/redis_6379/conf/6379.conf
redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
redis-cli
redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
redis-cli
cd /opt/redis_cluster/redis_6379/
ls
命令 | 描述 |
KEYS | 查看符合模板的所有key,比较占用内存,不建议在正式环境使用 |
DEL | 删除一个指定的key |
EXISTS | 判断key是否存在 |
EXPIRE | 给一个key设置有效期,有效期到期时该key会被自动删除 |
TTL | 查看一个KEY的剩余有效期 |
查看当前以n开头的key: key n*
批量增加key:mset k1 v1 k2 v2 k3 v3
RDB:生成时间点快照,保存于硬盘
优点:速度快,适合做备份,能做主从复制,单开子进程进行rdb操作不影响主业务
bgsaverdb保存命令
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加
save 60 10000
AOF配置
vim /opt/redis_cluster/redis_6379/conf/6379.conf