面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

Redis/缓存系统
445
0
0
2022-04-16

我是面试官

现在很多面试官还是喜欢问:“在你的项目里面有没有用过缓存?redis还是memcached?”,如果你连缓存都没有用过,那么你直接就被pass了。

那么有的网友会说:“我知道如何用redis实现分布式锁”,面对这个回答面试官肯定很喜欢,瞬间对你产生了好感,如果你再回答的详细一点,拿到offer的概率就更大了。

那么,你知道如何利用redis实现分布式锁吗?文末奉上Redis分布式锁讲解。

来张美女面试图缓解下气氛(话说美女们面试程序员成功概率很高的。女孩儿学前端编程还是很有优势的):

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

下面主要针对一些redis常用的数据类型和一些命令给大家讲下,会的呢就当是温习啦,以免到时候一激动,大脑一片空白。不会的可以学习学习~希望可以帮助到你,顺利找到工作。


常见类型

赋值与取值

set key value 赋值

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

get key 取值

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

判断一个键值是否存在

exists key

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

如果存在,返回整数类型 1 ,否则返回 0

删除键

del key [key.....]

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

可以删除一个或多个键,返回值是删除的键的个数

注意:不支持通配符删除

获得键值的数据类型

type key

面试官:“项目中使用过缓存吗?”,网友这么回复直接通过面试!

返回值可能是 string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型)

这里我们设置的是字符串,命令回车后会返回string

递增数字

incr key

这里注意redistemplate 和stringredistemplate的区别,不会的移步上一篇发文:

项目里经常使用缓存?Redis?Memcache?不知道这些你就亏大了!

当存储的字符串是整数形式时,redis提供了一个使用的命令 incr 作用是让当前的键值递增,并返回递增后的值

incr num

当要操作的键不存在时会默认键值为 0 ,所以第一次递增后的结果是 1 ,当键值不是整数时 redis会提示错误

增加指定的整数

incrby key increment

incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值如:

incrby num 2

incrby num 3

减少指定的整数

decr key

decrby key increment

desc 命令与incr 命令用法相同,只不过是让键值递减

decrby 命令与 incrby命令用法相同

同时 获得/设置 多个键值

mget key [key.....]

mset key value [key value .......]

增加指定浮点数

incrbyfloat key increment

incrbyfloat 命令类似 incrby 命令,差别是前者可以递增一个双精度浮点数,如:

incrbyfloat num 2.7

注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

向尾部追加值

append key value

作用是向键值的末尾追加 value ,如果键不存在则将改键的值设置为 value,即相当于 set key value。返回值是追加后字符串的长度

如:append foo " hello word!"

获取字符串长度

strlen key

返回键值的长度,如果键不存在则返回0

散列类型

赋值与取值

hset key field value

hget key field

hmset key field value [ field value ...... ]

hgetall key

hset 命令主要用来给字段赋值,而hget命令用来获得字段的值

hset 命令的方便之处在于不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存在来决定要执行的是插入操作还是更新操

作,当执行的是插入操作时, hset 命令返回 1 ,当执行的是更新操作时,hset 命令返回的是 0 ,当键本身不存在时, hset 命令还会

自动建立该键

hmset 设置多个键值

hmget 获得多个键值

hgetall 获取键中所有字段和字段值却不知道键中有哪些字段时使用,返回的结果是字段和字段值组成的列表

判断字段是否存在

hexists key field

同样的存在返回 1 ,否则返回 0

当字段不存在时赋值

hsetnx key field value

hsetnx 命令与hset 命令类似,区别在于如果字段已经存在,hsetnx 命令将不执行任何操作

增加数字

hincrby key field increment

使字段值增加指定的整数

删除字段

hdel key field [ field .....]

删除一个或多个字段,返回值是被删除的字段个数

hkeys 获取所有字段的名字

hvals 获得键中所有字段的值

获得字段数量

hlen key

后面还有多种类型,比如set类型,map类型操作,感兴趣的同学可以多去了解。这里只是给大家起个头。

写在文末

redis作为非关系型数据库,现在用的还是比较广泛的,尤其是很多电商系统会用到。面试官可能还会问,你往redis里面存什么?最常见的是token了。当然了还有一些使用redis实现分布式锁等等.