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,存在即以点赞过,否则未点赞.

posted @ 2020-02-13 09:20  if年少有为  阅读(2478)  评论(1编辑  收藏  举报