redis常见面试题 webber

redis

  • redis:可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

redis value各数据类型常用方法

1.字符串(String)

  • 存储:set key value
  • 获取:get key
  • 删除:del key

2.列表(List)

  • List:可以添加一个元素到列表的头部或尾部(允许重复)
  • 存储
    lpush key value 存储到列表头部
    rpush key value 存储到列表尾部
  • 获取:lrange key start end 范围获取(0 -1 为所有元素)
  • 删除
    lpop key 删除列表最左边的元素并返回
    rpop key 删除列表最右边的元素并返回

3.集合(Set)

  • Set:元素无序,不允许重复
  • 存储:sadd key value
  • 获取:smembers key 获取集合中的所有元素
  • 删除:srem key value 删除集合中的某个元素

4.散列表(Hash)

  • Hash:元素存储为map格式
  • 存储:hset key field value (field为存入元素的键值)
  • 获取
    hget key field 获取某个元素
    hgetall key 获取所有元素
  • 删除:hdel key field

5.有序集合(SortedSet)

  • SortrdSet:不允许元素重复,有序(根据Score进行排序)
  • 存储:zadd key score value
  • 获取
    zrange key start end 范围获取
    zrange key start end withscore 范围获取并显示score的值
  • 删除:zren key value

redis中其他常用命令

  • keys * 查询所有的键值
  • type key 查询键值所对应的数据类型
  • del key 删除指定的键值对

redis中的数据持久化

什么是持久化

  • 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

redis的两种持久化机制

1. RDB(默认)

RDB:是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。

  • 优点
    1、只有一个文件 dump.rdb,方便持久化。
    2、容灾性好,一个文件可以保存到安全的磁盘。
    3、性能最大化,使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能
    4、相对于数据集大时,比 AOF 的启动效率更高。
  • 缺点:数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)

2.AOF

AOF:是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。(当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。)

  • 优点
    1、数据安全,aof 持久化可以配置 appendfsync 属性,配置成always后,每进行一次 命令操作就记录到 aof 文件中一次。
    2、通过 append 模式写文件,即使中途服务器宕机,也可以通过 redis-check-aof 工具解决数据一致性问题。
    3、AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令 进行合并重写),可以删除其中的某些命令(比如误操作)
  • 缺点
    1、AOF 文件比 RDB 文件大,且恢复速度慢。
    2、数据集大的时候,比RDB启动效率低。

如何选择合适的持久化方式

  • 一般来说,你应该同时使用两种持久化功能。在这种情况下,当 Redis 重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。
  • 如果你非常关心你的数据, 并且可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。
  • 有很多用户都只使用AOF持久化,但并不推荐这种方式,因为定时生成RDB快照非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快,除此之外,使用RDB还可以避免AOF程序的bug。
  • 如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式。

Redis key的过期时间和永久有效分别怎么设置?

  • EXPIRE和PERSIST命令。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值