Time: 2024-09-23 Monday 20:22:01
Author: Jackasher
Redis Start
Redis可以把数据存在内存中,不需要IO操作,可以操作频繁读写的数据,这是redis的一些应用,目前只用过手机验证码的过期设置

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

防火墙开放端口
使用 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 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

常用操作
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数据结构