zoukankan      html  css  js  c++  java
  • redis实现朋友圈点赞

    List类型

    • 数据存储需求: 存储多个数据,并对数据进入存储空间的顺序进行区分
    • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
    • list类型:保存多个数据,底层使用双向链表存储结构实现

    基本操作

    • 添加/修改数据
    lpush key value1 [value2] ...
    rpush key value1 [value2] ...
    
    • 获取数据
    lrange key start stop
    # 获取所有
    lrange key 0 -1
    lindex key index
    llen key
    
    • 获取并移除数据
    lpop key
    rpop key
    

    扩展操作

    • 规定时间内获取并移除数据
    blpop key1 [key2] timeout
    brpop key1 [key2] timeout
    

    业务场景

    朋友圈点赞,要求按照点赞顺序显示点赞好友信息

    如果取消点赞,移除对应好友信息

    • 移除指定数据
    lrem key count value
    

    Trips 6:

    • redis应用于具有操作先后顺序的数据控制

    注意事项

    • list中保存的数据都是string类型的,数据总容量是有限的,最多2^32-1个元素
    • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
    • 获取全部数据操作结束索引设置为-1
    • list可以对数据进行分页操作,通常第一页的信息来自于list,第二页及更多的信息通过数据库的形式加载

    大概思路分析:
    点赞用户列表可以用一个list里面按顺序存放着用户id,而用户的信息以json字符串的方式存在一个string中,当需要显示点赞用户名字列表,只需要读取id list 根据id找到用户名字,处理后即可获取.
    当需要移除时可以将用户的id用lrem 去除, 至于如何避免重复点赞,可以增加一个set,set中存放点赞后的用户id,这样在进行rpush操作前先判断set中是否存在用户id,存在即以点赞过,否则未点赞.

  • 相关阅读:
    SQL Server 重新恢复自动编号列的序号
    AT指令
    wavecom短信猫常用AT命令
    Maven中-DskipTests和-Dmaven.test.skip=true的区别
    mybatis的插件,挺好支持下
    转java不同阶段的学习历程,总结的很不错,收了
    Java for循环和foreach循环的性能比较
    java synchronized 同步详解
    spring 中几种注解的说明
    zookeeper是什么?原理是什么?【转】
  • 原文地址:https://www.cnblogs.com/ifme/p/12302240.html
Copyright © 2011-2022 走看看