搜索
首页数据库Redisredis用在哪里

redis用在哪里

Jun 25, 2019 am 11:45 AM
redis

redis用在哪里

1. 高并发缓存/共享session:

    UserInfo getUserInfo (long id) {}

    取:

    userRedisKey = "user:info:" + id;

    value = redis.get(userRedisKey );

    if (value != null) {

           userInfo = deserialize(value);

           return userInfo;

    }

    存:

    userInfo = ***getUserInfo(id);

    redis.setex(userRedisKey, 3600, serialize(userInfo));

    用string存储序列化后的数据,不够立体直观,可以转为hmset存储为哈希结构,存取更直观

 

2. 简单分布式锁

    setnx只有不存在时能设置成功,其余只能等待。单线程

 

3. 计数器 incr,因为是单线程,比cas等少了cpu消耗,性能更高

    long incrVideoCounter (long id) {

          key = "video:playCount:" + id;

          return redis.incr(key);

    }

 

4. 实现栈/队列

    栈:       lpush + lpop

    队列:    lpush + rpop 

 

5. 流量控制/限速

    phoneNum = "12345678999";

    key = "shortMsg:limit:" + phoneNum;

    isExists = redis.set(key, 1, "EX 60", "NX");

    if (isExists != null || redis.incr(key) <= 5) {

           //通过

    } else {

          //不通过

    }

 

6. 消息队列

    使用lpush + brpop可实现阻塞队列,生产者从列表左端lpush插入元素,多个消费者从右端brpop阻塞获取队列尾部元素

 

7. 每个用户有自己的文章,现在要分页展示文章列表

    hmset article:1 title xx context XXXX

    lpush user:1:articles srticle:1 articles:3

    articles = lrange user:1:articles 0 9

    for article in {articles}

          hgetall {article}

 

8. 关注点赞等

    点赞: zincrby user:ranking:2016_03_15 mike 1

    取消: zrem user:ranking:2016_03_15 mike

    取得赞最多的10个用户: zrevrangebyrank user:ranking:2016_03_15 0 9

    展示用户信息及分数: hgetall user:info:tom /  zscore user:ranking:2016_03_15 mike / zrank user:ranking:2016_03_15 mike

 

9. bitmaps 计算大数据集合见的关系等

 

10. 排行榜

     mike上传了一个视频并获得了3个赞   zadd user:ranking:2016_03_15 mike 3

     又有人给点了个赞  zincrby user:ranking:2016_03_15 mike 1

 

11. 共同关注

     给用户添加关注标签   sadd user:1:tags tag1 tag2

     给标签添加用户          sadd tag1:uses user:1

     共同关注   sinter user:1:tags user:2:tags

     sinter/sunion/sdiff

 

12. 发布订阅

     subscribe video:changes:

     publish video:changeds "video1,video2"

     for video in video1,video2

            update (video)

 

每种数据type对应了多种底层数据结构实现(object encoding),可以通过数据大小长度场景等切换,达到更高的效率

持久化RDB(子进程创建,二进制文件,恢复快,不够实时)/AOF(appendonly。文本文件,实时写操作先aop_buffer,然后通过配置写入磁盘间隔,写入磁盘,达到一定大小合并)

批量hmget等操作要转为hscan等渐进式遍历方法,否则容易阻塞

缓冲:客户端缓冲(输入/输出),复制积压缓冲,aof缓冲

复制: 全量/增量 复制偏移量/复制积压缓冲(写命令发送给从服务器同时还维护一个先进先出的队列,等于主服务还保存着最近传播的命令)/ID

sentinal: 实现高可用,本身是特殊的redis节点,可以自己配置集群,通过心跳等机制监控redis数据集群,当某一节点出现故障不可用,可以及时发现并自动迁移

cluster: 分布式集群,容错选主等。将物理结点映射到16383个槽位实现动态性

更多Redis相关技术文章,请访问Redis教程栏目进行学习!

以上是redis用在哪里的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
REDIS与数据库:性能比较REDIS与数据库:性能比较May 14, 2025 am 12:11 AM

Redisoutperformstraditionaldatabasesinspeedforread/writeOperationsDuetoitsin-memorynature,niletraditionalditionalditionalditationaldatabasesexcelcelincomplexqueriessanddaintegrity.1)redisisisisideSidealForrealForreal-timeanalyticsanticanticanticanticanticantic.2)

我什么时候应该使用redis代替传统数据库?我什么时候应该使用redis代替传统数据库?May 13, 2025 pm 04:01 PM

用户edisinsteadofatraditionaldatabasewhenyourapplicationrequirespeedandreal-timedataprocorsing,sueAsAsforCaching,sessionmanagement,orrereal-timeanalytics.redisexcelsin:1)caching,缓存,减少载荷载量

REDIS:超越SQL- NOSQL的观点REDIS:超越SQL- NOSQL的观点May 08, 2025 am 12:25 AM

Redis超越SQL数据库的原因在于其高性能和灵活性。1)Redis通过内存存储实现极快的读写速度。2)它支持多种数据结构,如列表和集合,适用于复杂数据处理。3)单线程模型简化开发,但高并发时可能成瓶颈。

REDIS:与传统数据库服务器的比较REDIS:与传统数据库服务器的比较May 07, 2025 am 12:09 AM

Redis在高并发和低延迟场景下优于传统数据库,但不适合复杂查询和事务处理。1.Redis使用内存存储,读写速度快,适合高并发和低延迟需求。2.传统数据库基于磁盘,支持复杂查询和事务处理,数据一致性和持久性强。3.Redis适用于作为传统数据库的补充或替代,但需根据具体业务需求选择。

REDIS:功能强大的内存数据存储的简介REDIS:功能强大的内存数据存储的简介May 06, 2025 am 12:08 AM

Redisisahigh-performancein-memorydatastructurestorethatexcelsinspeedandversatility.1)Itsupportsvariousdatastructureslikestrings,lists,andsets.2)Redisisanin-memorydatabasewithpersistenceoptions,ensuringfastperformanceanddatasafety.3)Itoffersatomicoper

Redis主要是数据库吗?Redis主要是数据库吗?May 05, 2025 am 12:07 AM

Redis主要是一个数据库,但它不仅仅是数据库。1.作为数据库,Redis支持持久化,适合高性能需求。2.作为缓存,Redis提升应用响应速度。3.作为消息代理,Redis支持发布-订阅模式,适用于实时通信。

REDIS:数据库,服务器还是其他?REDIS:数据库,服务器还是其他?May 04, 2025 am 12:08 AM

redisisamultifaceTedToolThatServesAsAdatabase,server和more.itfunctionsasanin-memorydatastrustore,supportsvariousDataStructures,and CanbeusedAsacache,MessageBroker,sessionStorage,sessionStorage,sessionstorage,andford forderibedibedlocking。

REDIS:揭示其目的和关键应用程序REDIS:揭示其目的和关键应用程序May 03, 2025 am 12:11 AM

Redisisanopen-Source,内存内部的库雷斯塔氏菌,卡赫和梅斯吉级,excellingInsPeedAndVersatory.itiswidelysusedforcaching,Real-Timeanalytics,Session Management,Session Managements,and sessighterboarderboarderboardobboardotoitsssupportfortfortfortfortfortfortfortfortorvortfortfortfortfortfortforvortfortforvortforvortforvortfortforvortforvortforvortforvortdatastherctuct anddatataCcessandcessanddataaCces

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。