一文带你梳理Redis基础(程序员看过来!)

Redis的数据结构

Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景

五种基础数据结构

■String:字符串,是构建其他数据结构的基础
■Hash: 哈希列表
■List:列表
■Set: 集合,在哈希列表的基础上实现
■Sort Set:有序集合

复杂的数据结构

■Bitmaps:位图,在string的基础上进行位操作,可以实现节省空间的数据结构。
■Hyperloglog:用于估计一个set中元素数量的概率性的数据结构。
■Geo:geospatial,地理空间索引半径查询。
■BloomFilter:布隆过滤器。

不同数据结构的相同之处

从上面的介绍,我们看到支持的数据结构的不同,但其实,Redis的每一种数据结构都由一个key和value组成,可以抽象为:
在这里插入图片描述
而所有数据结构的key的值都是任意合法的字符串,不同的数据结构的区别就在于value存储的值的不同而不同。
比如,最简简单的String数据结构,其value为String,所以String可以表示为:
在这里插入图片描述
而Hash数据结构,其value为一个哈希列表,所以Hash可以表示为:
在这里插入图片描述
这里就列出String和Hash来讲解说明,关于更多数据结构的内部结构及详细操作,我们在之后的文章在再谈谈吧。

Redis的通用命令

Redis官网将Redis的命令按照功能划分为15个主题分组,其中,Kyes主题的命令对所有的数据结构都通用,因此,有必要在了解其他数据结构命令前好好学习一下。

keys

keys命令的作用是列出Redis所有的key,该命令的时间复杂度为0(N),N随着Redis中key的数量增加而增加,因此Redis有大量的key,keys命令会执行很长时间,而由于Redis是单线程,某个命令耗费过长时间,则会导致后面的的所有请求无法得到响应,因此,千万不要在生产服务器上使用keys命令。

1 # key命令, 时间复杂度为0(n)
2 keys pattern #pattern可为一个包含匹配模式的字符串, 可以包含*, +, ?, [a-z]等模式。

示例

> mset hello_ test1 one hello_ test2 two helloa a hellob b
> keys hello*
1) "hello_ test1"
2) "hello. test2"
3) "helloa"
4) "hellob"
> keys heelo?
1) "helloa"
2) "hellob"
> keys he11o(a-z
1) "helloa"
 2) "hellob"

exists

exists命令用于判断-个或多个key是否存在,判断多个key时, key之间用空格分隔,exists的返回值为整数,表示当前判断有多少个key是存在的。

#exists命令, 时间复杂度0(1)
exists key [key ...]

示例

> set test1 t1
> exists test1 test2
(integer) 1#只有一个key存
在
> exists test3 test3
> (integer) 0 #key都不存在

del

del命令用于删除-个或多个key,多个key之间用空格分隔,其返回值为整数,表示成功删除了多少个存在的key,因此,如果只删除-个kev,则可以从返回值中判断是否成功,如果删除多个kev,则只能得到删除成功的数量。

1 # del命令,吋囘夏奈度0(n)
2 del key [key ..]

示例

1ゝsettest
2 t
3 > de1 test
4 (integer) 1
5 > mset test1 2 test2 1
6ゝ de1 test1 test2 test3
7 (integer) 2 #返回2,表示成功刪除两个
8 #再次刪除, 返回0,因カ刪除成功个数为0
9 > de1 test1 test2 test3
(integer) 0

expire,pexpire

expire设置key在多少秒之后过期, pexpire设置key在多少毫秒之后过期,成功返回1,失败返回0。

1 # expire命令,时间复杂度为0(1)
2 expire key seconds
3
4 # pexpire命令,时间复杂度为0(1)
5 pexpire key milliseconds

示例

1 > mset test test_ value test1 test1_ value
2 > expire test 10 #设置10秒后过
3 期
4 (integer) 1
5 > pexpire test1_ value 10000 #设置10009毫秒(10s )后过期
6 (integer) 1
7 > expire ttt 100
(integer)0#不存在的key,设置失败,返回
0

小结

上面介绍的是Redis中最常用的通用命令,虽然简单,但还是非常有必要掌握其用法和使用方面要注意的事项,其实,对于普通开发入员来说,很多时候,也只是使用这些基础通用的命令来操作Redis而已。

读者福利

感谢你看到了这里!
我这边整理了很多家互联网公司的面试资料(含答案)
在这里插入图片描述

有需要的话可以免费获取!
点击免费领取

如果喜欢本篇文章,欢迎转发、点赞。
记得关注我!

猜你喜欢

转载自blog.csdn.net/weixin_49527334/article/details/108382552