程序生涯不易,总要有Java这杯cafe

Redis常见面试题

2020-10-01  本文已影响0人  宇宙之一粟

说说你用过的Redis的数据类型

String:最基本的数据类型,二进制安全 (可以包含任何对象:序列化对象,JPG)

/*
* 保存字符串对象的结构
*/
struct asshdr {
  // buf 中已占用空间的长度
  int len;
  
  // buf 中剩余可用空间的长度
  int free;
  
  // 数据空间
  char buf[];
};

Hash:String元素组成的字典,适合用于存储对象

hmset lilei name "LiLei" age 26 title "Senior"

hget lilei age

hset lilei title "Pricipal"

List:列表,按照String元素插入顺序排序

lpush mylist aa
lpush mylist bb
lpush mylist cc
lrange mylist 0 10

后进先出的特定,轻松实现栈的功能

Set:String元素组成的无序集合,通过哈希表实现,不允许重复

sadd myset 111
sadd myset 222
sadd myset 333
sadd myset 222

smembers myset
sadd myset abd

所有的关注人存为Set

Sorted Set:有序集合

通过分数来为集合中的成员进行从小到大的排序,分数可以相同,成员值必须唯一

zadd myzset 3 abc
zadd myzset 1 abd
zadd myzset 2 abb

zrangebyscore myzet 0 10

用于计数的HyperLogLog

用于支持存储地理位置信息的Geo

底层数据类型基础

  1. 简单动态字符串
  2. 链表
  3. 字典
  4. 跳跃表
  5. 整数结集合
  6. 压缩列表
  7. 对象

从海量Key里查询出某一固定前缀的Key

留意细节:

  1. 利用 KEYS pattern:查询所有符合给定模式pattern的key
keys k1*
  1. SCAN cursor [MATCH pattern] [COUNT count]
scan 0 match k1* count 10

如何通过Redis实现分布式锁

分布式锁需要解决的问题:

SETNX key value:如果key不存在,则创建并赋值

get locknx

setnx locknx test

setnx locknx task

get locknx

原子性,实现分布式锁

上一篇 下一篇

猜你喜欢

热点阅读