key筛选 redis_Java面试系列redis相关

redis是个啥东西?

redis全称是“Remote Dictionary Service”(远程字典服务),在互联网领域,它是使用最广泛的缓存中间件,大部分公司或多或少的都会使用到redis,它不仅可以用作缓存,还可以有很多其他用途,如分布式锁、接口的幂等性等。

redis有哪些数据结构?

redis有五种基础数据结构,分别是:string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。

具体各个数据结构的用途可以回看我以前的文章:传送门

  • string(字符串):redis中最基础的数据结构。(很多人在使用redis时,一直奉行着万物皆字符串,这是不对的,要善于使用合适的数据结构才能发挥redis的最大效率)
  • list(列表):相当于Java中的LinkedList,是一个双向链表,既可以用作队列(先进先出),也可以用作栈(先进后出)。
  • hash(字典):相当于Java中的HashMap,也是数组+链表,不同的是,redis字典的值只能是字符串,而且他们的rehash方式不一样,Java中是一次性全部rehash,而redis是渐进式rehash。
  • set(集合):相当于Java中的HashSet,无序和唯一,内部实现相当于一个特殊的字典,字典中所有的value都是null。
  • zset(有序集合):相当于Java中的SortedSet和HashMap的结合体,既能保证内部value的唯一性,又能通过value附带的score进行排序。内部是通过一种叫做“跳跃表”的数据结构来实现的。

上述五种数据结构中除了字符串,其他四种都是容器型数据结构,它们有两个共同点:1、当添加第一条数据时,如果容器不存在,就创建一个。2、当删除最后一条数据时,也会同时删除容器

所有的数据结构都可以设置过期时间,这也是redis特色功能之一。

redis还有很多高级数据结构,如:HyperLogLogBloom Filterpub/sub等。如果在面试中可以说一些高级数据结构,也是个加分项。

redis为啥会那么快?

  • 使用单线程,避免了上下文切换以及线程之间竞争带来的性能消耗,也不用去考虑各种锁的问题。
  • 所有数据都在内存中,所有的运算都是内存级别的运算。
  • 采用多路复用模型来解决多个客
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值