Redis 启动!

redis 命令大全

官方 GUI 工具-RedisInsight

简介

因为 mysql 存在硬盘,并且会执行 sql 的解析,会成为系统的性能瓶颈,毕竟服务器端执行计算再快,等待数据库查询结果也十分耗时。所以我们要做一些优化。

那么我把数据缓存在内存中,阁下又该如何应对了。而 redis 就是这种内存数据库:

  • redis 的主要用途是把查出数据来之后放到 redis 中缓存,下次如果 redis 有数据就直接用,没有的话就查数据库然后更新 redis 缓存
  • 其次用途就是直接作为存储数据的地方了,因为 redis 本身是会做持久化的,也可以把数据直接保存在 redis 里,不存到 mysql。但因为 redis 在内存存储数据,这样成本还是比较高的,需要经常扩容。

速通

docker 拉_**<font style="color:rgb(37, 41, 51);">redis</font>**_镜像然后直接开 RUN

Redis 是 key、value 的格式存储的,value 有很多种类型,比如 **<font style="color:rgb(37, 41, 51);">string、list、set、sorted set(zset)、hash、geo</font>** 等。

灵活运用这些数据结构,可以完成各种需求,比如排行榜用 zset、阅读数点赞数用 string、附近的人用 geo 等。

而且这些 key 都可以设置过期时间,可以完成一些时效性相关的业务。

进入 cli

1
redis-cli

String

redis 的 String 包括字符串与数字

get、set、keys

get 只用于获取 String 类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> set bzj 123
OK
> get bzj
"123"
> keys bzj
1) "bzj"
> keys *
1) "loc2"
2) "bzj"
3) "num"
4) "zset1"
5) "loc"
6) "hash1"
7) "list1"
8) "set1"

incr 用于递增

只能递增数字

1
2
3
4
> incr bzj
(integer) 124
> incr bzj
(integer) 125

List

lpush、rpush

lpush 即是 left push 的意思,执行后会从左到右添加到列表中。

1
2
3
lpush list1 111
lpush list1 222
lpush list1 333

rpush 是 right push 的意思,执行后会从右往左添加到列表中.

1
2
rpush list1 444
rpush list1 555

lpop、rpop

lpop 和 rpop 自然是从左边和从右边删除数据。

lrange

查询 list 类型的数据要用 lrange。

1
2
# -1 代表到最后、就是查询 list1 的全部数据。
lrange list1 0 -1

Set

Set 的特点是无序并且元素不重复。

sadd

1
2
3
4
5
6
sadd set1 111
sadd set1 111
sadd set1 111
sadd set1 222
sadd set1 222
sadd set1 333

sismember

判断是否是集合中的元素,也可查询所有元素

1
2
3
4
5
6
7
8
sismember set1 111
> (integer) 1
sismember set1 444
> "(nil)"
sismember set1
1) "111"
2) "222"
3) "333"

Sorted Set

set 只能去重、判断包含,不能对元素排序。如果排序、去重的需求,比如排行榜,可以用 sorted set,也就是 <font style="color:rgb(37, 41, 51);">zset</font>

zadd

它每个元素是有一个<font style="color:rgb(37, 41, 51);">分数 (score)</font> 的,会按照分数来排序:

1
2
3
4
zadd zset1 5 guang
zadd zset1 4 dong
zadd zset1 3 xxx
zadd zset1 6 yyyy

zrange

查询 Sorted Set 类型的数据要用 zrange。

1
2
# 比如取排名前三的数据
zrange zset1 0 2

geo

就是经纬度信息,根据距离计算周围的人用的

1
geoadd loc 13.361389 38.115556 "guangguang" 15.087269 37.502669 "dongdong"

你可以用 geodist 计算两个坐标点的距离:

1
2
geodist loc guangguang dogndong
> "166274.1516"

用 georadius 搜索某个半径内的其他点,传入经纬度、半径和单位:

1
2
3
4
5
georadius loc 15 37 100 km
> "dongdong"
georadius loc 15 37 200 km
> "guangguang"
> "dongdong"

平时我们查找周围的人、周围的 xxx 都可以通过 redis 的 geo 数据结构实现。

Hash

和 Map 对象类似

hset

1
2
3
4
5
hset hash1 key1 1
hset hash1 key2 2
hset hash1 key3 3
hset hash1 key4 4
hset hash1 key5 5

hget

1
2
hget hash1 key3
> '3'

属性操作

expire

设置过期时间

1
2
# 设置 dong1 的 key 为 30 秒过期:
expire dogn1 30

ttl

查询剩余过期时间

1
2
ttl dogn1
> (integer) 25

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!