3.Redis 的基础知识

zhanglei 2022年07月17日 294次浏览

3.Redis 的基础知识

Redis 默认有 16 个数据库

查看 Redis 配置文件

image-20220717151441048

点击回车,往下翻发现:

image-20220717152056595

默认使用的编号为0(第一个)数据库

按 :wq+enter 退出

重新开启动一个xshell连接,开启 redis 服务:

输入 clear 清空:

image-20220717153547908

使用 select 切换数据库

redis 默认是用的编号为0的数据库,可以输入 select index 切换数据库:

image-20220717154005321

使用 flushdb 清空当前数据库

我们在第四个数据库中添加数据:

输入 dbsize 可以查看当前数据库中的数据个数

image-20220717154620924

输入 keys *可以查看当前数据库中的所有 key

image-20220717154808130

我们再切换到第一个数据库,也在里面添加一组数据:

image-20220717155107734

输入 flushdb 清空当前数据库

image-20220717155323146

输入 select 3切换到第四个数据库查看key

image-20220717155747038

发现第四个数据库里的值并没受到影响,flushdb 只是清空当前数据库

使用 flushall 清空所有数据库

上面步骤的操作结果:第四个数据库有一个数据,第1个数据库没有数据

现在我们切换到第一个数据库,添加回数据:

image-20220717160000775

再次确认第一个数据库和第四个数据库中都有数据:

image-20220717160135241

输入 flushall清空所有数据库

image-20220717160316101

发现第一个数据库和第四个数据库中的数据都被清空,flushall 清空所有数据

Redis 是单线程的!

官方表示,Redis是基于内存操作,CPU不是Redis的性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽。可以使用单线程实现!

Redis 为什么单线程还这么快?

1、误区1:高性能的服务器一定是多线程的

2、误区2:多线程(存在CPU上下文切换!)一定比单线程效率高

CPU上下文切换的概念:一个线程分配到时间片,到未分配到,再到分配到时间片的过程。

核心:Redis 是将所有的数据都放在内存当中的,所以说使用单线程去操作效率就是最高的,多线程会存在CPU上下文切换,很耗时。对于内存系统来说,没有CPU上下文切换效率就是最高的多次读写都是在同一个CPU上。

Redis常见命令补充

127.0.0.1:6379> auth zhanglei123
OK
127.0.0.1:6379> flushall          #flushall 清空所有数据库
OK
127.0.0.1:6379> set name zhanglei
OK
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *			  # 查看当前数据库中的所有key
1) "age"
2) "name"
127.0.0.1:6379> exists name      #exist查看key是否存在,存在返回1
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0
127.0.0.1:6379> type name        #type 查看key的类型
string
127.0.0.1:6379> type age
string							 # move
127.0.0.1:6379> move name 1      #将数据移动到第index+1个数据库
(integer) 1 
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "name"						   # expire
127.0.0.1:6379[1]> expire name 10  #设置数据存活时间
(integer) 1
127.0.0.1:6379[1]> ttl name        #查看数据剩余存活时间
								   #ttl---time to live
(integer) 6

127.0.0.1:6379[1]> ttl name
(integer) -2
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379[1]>