Redis Start

Time: 2024-09-23 Monday 20:22:01
Author: Jackasher

Redis Start

Redis可以把数据存在内存中,不需要IO操作,可以操作频繁读写的数据,这是redis的一些应用,目前只用过手机验证码的过期设置

image-20240923140146122

远程连接

redis默认无法远程访问,需要开放权限

image-20240923191841437

防火墙开放端口

使用 firewalld(CentOS/RHEL 7+):

1
2
sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload

最后阿里云也要开放安全组,然后使用命令连接

1
redis-cli -h 8.137.145.18 -p 6379

最后完成后重启服务

1
sudo systemctl restart redis

RPM包管理

前面在找不到redis配置文件时,时,使用rpm可以告诉我们软件包的信息

1
rpm -ql redis

image-20240923193246071

基础操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
select

//key操作
keys *
exists <key>
type <key>
del <key>
expire <key>
ttl <key>

//数据库操作
dbsize
flushdb
dlushall

String数据结构操作

String是线程安全的,最大为512MB

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
get <key>
set <key> <value>
mget k1 k2 k3
mset k1 v1 k2 v2
msernx k1 v1 k2 v2

append <key> <abc>
strlen key
setnx <key> <value>
setex k1 <expiretime> v1

//原子操作
incr key
decr key

List数据结构

List底层是一个双向链表,通过索引取中间值会比较慢, k1代表链表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//这种数据结构会变成 v3 v2 v1
lpush k1 v1 v2 v3
lrange k1 0 -1

//这种数据结果会变成v1 v2 v3
rpush k1 v1 v2 v3
lrange k1 0 -1

lpop
rpop

//把k1的右边取出来,插到k2左边
rpoplpush k1 k2

lindex k1 <index>
linsert k1 before <v1> <newValue>
lrem k1 <num> v1

Set数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sadd k1 v1 v2 v3
smembers
sismember

//返回集合元素个数
scard k1
srem k1 v1 v2

//随机吐出一个值
spopo k1

//随机取出n个值,不会删除
srandmember k1 <num>

smove k1 k2 v1

//取交集
sinter

//取并集
sunion

//取差集
sdiff

Hash数据结构操作

hash有点像key里面放Map

image-20240923151445956

常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
hset user:1001 k1 v1 k2 v2
hget user:1001 k1
hget user:1001 k2

//判断k1里面有没有k1
hexists k1 v1

hkeys
hvals
hincrby k1 v1 <increment>

hsetnx


Zset数据结构


Redis Start
http://example.com/2024/09/23/Redis Start/
作者
Jack Asher
发布于
2024年9月23日
许可协议