zoukankan      html  css  js  c++  java
  • Redis五种数据类型及应用场景

    一、什么是Redis

    Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。

    与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

    二、Redis的五种数据类型

    1、String

    非常常用的类型,搞过Redis的应该都用过。

    单值缓存:即简单键值对数据缓存;有一些数据需要共享,比如在没有统一授权中心的多个系统中,可以通过相同的算法共享token字符串进行各系统统一认证;

    对象缓存:比如之前都喜欢用Session保存用户数据,然后在每个网页中进行使用,但对于分布式或是集群系统就需要做Session共享了,一般会将用户信息转为json字符串进行缓存;

    以上只是用于共享数据,但其实经常会用于缓存一些高频率访问但不频繁修改的数据上。比如采集设备数据,需要实时核对设备是否正确,当采集比较频繁,如传感器数据时,核对的设备信息不可能实时从数据库中查,需将其进行缓存,减轻数据库压力的同时,也能提高效率。

    文章阅读数或网页浏览数统计:常见博客文章或是公众号都有阅读数统计,或是自己开发的站点需要统计页面访问量,用Redis也可以轻松实现,换其他方式估计得费点心思。

    2、Hash

    适用于存储对象。如商品详情,个人信息详情,新闻详情等。

    对象缓存:string也能做,为什么还要用hash?,string一般用于简单对象的缓存,比如字段不多,记录也不多的情况,便于序列化解析。

    如:多个主机,每个主机中有不同的属性,每个属性有对应的值。

    3、List

    list是有序的,比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表等。

    模拟消息推送:

    4、Set

    无序集合,不可重复。set最牛的地方在于,可以对两个set提供交集、并集、差集操作。

    抽奖逻辑:抽奖小伙伴们不陌生了吧,不管是公司年会抽奖,还是公众号参与抽奖,应该几乎不用亲手抓阄了吧。都是通过程序,把人员都放在一起,然后随机抽取,set很符合这种应用场景,如下:

    共同好友统计:

    5、Zset

    zset的命令一般以z开头,里面元素是有序不可重复的。和Set用法基本一样,只是每个元素中多了一个分值,用于元素排序。

    用于排名:比如考试成绩的排名,新闻热度排行榜,直播打赏排名等。

    三、什么是Redis持久化

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

  • 相关阅读:
    BZOJ 3236 AHOI 2013 作业 莫队算法
    使用再哈希算法查找元素
    冰雪奇缘--用爱酿就一部经典
    Scrapy系列教程(2)------Item(结构化数据存储结构)
    html学习笔记二
    知方可补不足~sqlserver中触发器的使用
    我心中的核心组件(可插拔的AOP)~调度组件quartz.net
    EF架构~为BulkInsert引入SET IDENTITY_INSERT ON功能
    知方可补不足~sqlserver中使用sp_who查看sql的进程
    知方可补不足~为千万级数据表加索引
  • 原文地址:https://www.cnblogs.com/Neonuu/p/14656660.html
Copyright © 2011-2022 走看看