Redis 快速入门
本文最后更新于:2023年7月11日 上午
Redis 是一种基于内存的 key-value 型数据库。它的所有数据存储在内存中,所以它的读写性能非常高,同时它也是一种非关系型数据库。它通常作为 Mysql 的缓存数据库使用,提升数据库的性能。
Redis 的安装
我们从安装 Redis 开始:
- 下载 Redis Linux 的压缩包
tar -zxvf redis.tar.gz -C /usr/local
解压 redis 到usr/local
目录下- 进入
usr/local/redis
目录下使用命令make
编译 redis(需要安装 gcc-c++) - 进入
usr/local/redis/src
使用命令,make install
安装 reids
安装完成后,使用 redis-server
即可启动,redis 的默认端口是 6379。为了便于我们的学习和使用,我们需要开放虚拟机的 6379 端口,并关闭 redis 的保护模式,以供我们在外部访问。
配置 Redis:
- 防火墙开放端口:
firewall-cmd --zone=public --add-port=6379/tcp --permanent
- 重启防火墙:
firewall-cmd --reload
- 配置 redis:在 redis 的安装目录下
vim redis.conf
- 设置
protect-mode: no
,关闭保护模式。关闭保护模式后,任何主机就可以在没有密码的情况下连接 redis了。 - 设置
daemonize: yes
使 redis 在后台运行。 - 在 redis 安装目录下加载配置文件启动 redis
src/redis-server ./redis.conf
然后就可以在外部访问我们的 redis 了。
Redis 基本知识
Redis 有五种常用的数据类型:
- 字符串 string:存储字符串,常用
- 哈希 hash:适合村存储对象
- 列表 list:按照插入顺序排序,元素可以重复
- 集合 set:无序集合,元素无法重复
- 有序集合 sorted set:有序集合,元素无法重复
1. string 常用命令
set key
value 设置指定 key 的值,示例:set name yunfei
get key
获取 key 的值,示例:get name
1
2
3
4> set name yunfei
OK
> get name
yunfeisetex key seconds value
,设置 key 的值,并在 seconds 秒后失效,示例:set name 5 yunfei
1
2
3
4
5
6
7
8
9> setex name 5 yunfei
OK
> get name
yunfei
# 等待 5 秒
> get name
nullsetnx key value
,设置一个 key 的值,只在 key 不存在时成功,示例:set name yun
1
2
3> setnx name yun
# 0 代表失败,因为 name 已经存在
0
2. hash 常用命令
hash 用一个 string 类型的 key,对应多个 filed -> value。就像用一个 key 对应一个 json 对象一样。它适合用于存储对象。
hset key filed value
设置一个 key,并设置它的 filed 和 value1
2
3
4> hset 0x01 name linyun
1
> hset 0x01 password jdssiis.3@dd
1hget key filed
获取指定 key 中的某个 filed 的value1
2> hget 0x01 name
linyunhdel key filed
删除某个 key 中的 filed1
2> hdel 0x01 age
1hkeys key
获取某个 key 的全部 filed1
2
3> hkeys 0x01
name
passwordhvals key
获取某个 key 的全部 value1
2
3> hvals 0x01
linyun
jdssiis.3@ddhgetall key
获取某个 key 的全部 filed 和 value1
2
3
4
5> hgetall 0x01
name
linyun
password
jdssiis.3@dd
3. list 常用命令
list 是字符串列表,按照插入的顺序排序。list 在插入值时,从左侧插入。
lpush key value value2...
向 list 中插入一个或者多个值1
2> lpush mylist first second third
6lrange key start stop
获取 list 中从 start 开始到 stop 结合的元素,当 stop 为 -1 时,表示获取全部1
2
3
4
5
6
7> lrange mylist 0 -1
third
second
first
aaa
new
crpop key
,移除并获取列表中最右边的元素,也就是最早插入的元素。1
2> rpop mylist
cllen key
,获取指定 list 的长度1
2> llen mylist
5brpop key1 [key2] timeout
移除并获取 list 中最右边的元素,如果没有就等待 timeout 秒结束,如果等待值出现就直接返回。当 list 不为空时,使用效果和rpop
基本相同1
2
3> brpop mylist 10
mylist
new
4. set 常用命令
set 是无序集合,且元素不能重复
sadd key member1 member2
向集合添加一个或者多个成员1
2> sadd s m1 m2 m3
3smembers key
获取指定集合的全部元素1
2
3
4> smembers s
m3
m2
m1scard key
获取集合的元素个数1
2> scard s
3sinter key1 key2
返回给定集合的元素的交集1
2
3> sinter myset myset2
apple
catsunion key1 key2
返回给定两个集合元素的并集1
2
3
4
5
6
7> sunion myset myset2
banana
hourse
apple
perl
dog
catsdiff key1 key2
返回前面的集合减去后面集合剩下的元素1
2
3
4
5
6
7
8> sdiff myset myset2
dog
perl
hourse
banana
> sdiff myset2 mysetsrem key member1 member2
移除集合中的一个或者多个元素1
2> srem myset apple cat
2
5. sorted set 常用命令
sorted set 和普通的 set 差别不大,只是它引入了一个 score 作为权值,从而实现对元素的排序,score 小的排在前面。
zadd key score1 member1 score2 member2
添加一个或者多个元素1
2> zadd sset 10 apple 20 cat
2zrange key start stop [withscores]
按照 score 排序获取从 start 到 stop 的元素1
2
3> zrange sset 0 -1
apple
catzincrby key score member
增加元素的权值,可以为负数1
2
3
4
5
6
7
8> zincrby sset -15 cat
5
> zrange sset 0 -1 withscores
cat
5
apple
10zrem key member
移除有序集合中的一个或者多个元素1
2> zrem sset cat
1
总结
- Redis 五种基本数据类型:string、list、hash、set、sorted set
redis key 的通用命令
前面的几种命令是针对特定的数据类型的,以下是一些针对 redis 中 key 的通用命令。
keys pattern
查找符合 pattern 的所有 keyexists key
检查给定 key 是否存在type key
返回 key 的类型ttl key
返回 key 的有效时间,单位为秒,如果为 -1 ,表示永久有效del key
key 存在时删除 key
Redis 快速入门
https://travelerentity.github.io/2023/Redis-快速入门/