redis基础

相关阅读

Redis基础

简介

redis是一款非关系型数据库,数据以key-value的键值形式存储在内存中。默认的database有16个,可以随意选择0-15

背景

在互联网发展的开始,关系型数据库受到广泛的关注和应用,因为访问和并发不是很高,交互也很少,这个时候,关系型数据库出现了缺点和不足,引发这个问题的是在磁盘的I/O上,对性能有了更高的需要:

  • 读写速度要快,这样才能提高用的满意度,

  • 对大型应用,支持海量数据。

  • 集群和分布式的部署与管理。

  • 运行成本

为了解决以上4个问题,出现了NoSQL ,有高性能、高可用、可扩展性强。

优点

  • 响应快速

    Redis 响应非常快,每秒可以执行大约 110 000 个写入操作,或者 81 000 个读操作,其速度远超数据库。如果存入一些常用的数据,就能有效提高系统的性能。

  • 支持 6 种数据类型

    它们是字符串、哈希结构、列表、集合、可排序集合和基数。比如对于字符串可以存入一些 Java 基础数据类型,哈希可以存储对象,列表可以存储 List 对象等。这使得在应用中很容易根据自己的需要选择存储的数据类型,方便开发。

    对于 Redis 而言,虽然只有 6 种数据类型,但是有两大好处:一方面可以满足存储各种数据结构体的需要;另外一方面数据类型少,使得规则就少,需要的判断和逻辑就少,这样读/写的速度就更快。

  • 操作都是原子的

    所有 Redis 的操作都是原子的,从而确保当两个客户同时访问 Redis 服务器时,得到的是更新后的值(最新值)。在需要高并发的场合可以考虑使用 Redis 的事务,处理一些需要锁的业务。

  • MultiUtility 工具

    Redis 可以在如缓存、消息传递队列中使用(Redis 支持“发布+订阅”的消息模式),在应用程序如 Web 应用程序会话、网站页面点击数等任何短暂的数据中使用。

缺点

  • 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
  • Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
  • Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费

使用场景

  1. 计数器

    可以对 String 进行自增自减运算,从而实现计数器功能。Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。

  2. 缓存

    用户查数据,首先从缓存中查询,如果缓存中没有,就从数据库查,如果查到数据,则返回数据给用户,并且会把数据添加到缓 存中,下次访问这些数据的时候,会直接从缓存中去查,不会再去数据库,减轻了数据库的压力

  3. 查找表

    例如 DNS 记录就很适合使用 Redis 进行存储。

    查找表和缓存类似,也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效,而缓存的内容可以失效,因为缓存不作为可靠的数据来源。

  4. 消息队列

    List 是一个双向链表,可以通过 lpush 和 rpop 写入和读取消息

    不过最好使用 Kafka、RabbitMQ 等消息中间件。

  5. 会话缓存

    可以使用 Redis 来统一存储多台应用服务器的会话信息。

    当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。

  6. 分布式锁

    在分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。

    可以使用 Redis 自带的 SETNX 命令实现分布式锁,除此之外,还可以使用官方提供的 RedLock 分布式锁实现。

  7. 其他

    Set 可以实现交集、并集等操作,从而实现共同好友等功能。

    ZSet 可以实现有序性操作,从而实现排行榜等功能。

基本命令

基本数据结构

  • String
  • Hash
  • List
  • Set
  • zset
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值