区分用redis实现消息的按用户细分发送
随着社交软件和实时通信应用的兴起,消息系统已经成为互联网应用中的一项重要功能。在构建消息系统时,按用户细分发送是一种常用的方式,它可以让用户只接收到他们关心的消息,提高信息传递的效率。
Redis是一种高性能的键值存储数据库,它支持丰富的数据结构和灵活的命令,可以被用来构建各种类型的应用,包括消息系统。本文将介绍如何用Redis实现消息的按用户细分发送。
Redis提供了五种数据结构,分别为字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(ZSet)。在实现消息系统时,我们可以使用Hash和Set数据结构。
Hash用于存储用户和他们需要接收的消息之间的映射关系。在这里,我们以用户ID为Hash的键,将用户所需要接收的消息的ID存储在Hash的值中。
我们可以用以下代码来实现Hash:
HSET user_Message:user_id message_id true
其中,user_id为用户的ID,message_id为消息的ID。当有新消息时,我们可以将其加入到消息池中,再将其ID存储在所有需要接收该消息的用户的Hash值中:
SADD message_pool message_idSMEMBERS user_set:tag:tag_id | xargs HSET user_message:$1 message_id trueSMEMBERS user_set:tag:tag_id | xargs HGETALL user_message:$1
在以上代码中,tag_id为接收此消息的用户的标签,user_set:tag:tag_id为Hash的键,存储了需要接收此消息的所有用户的ID。我们使用SMEMBERS命令从Hash中取出用户ID,再使用xargs命令将其作为参数传入HSET中,将消息ID存储在用户的Hash值中。我们使用HGETALL命令来检查是否成功缓存。
在用户接收消息时,我们可以使用以下代码从Redis中查询:
SMEMBERS user_set:tag:tag_id | xargs HGET user_message:$1 message_id
其中,tag_id为接收此消息的用户的标签,user_set:tag:tag_id为Hash的键,存储了需要接收此消息的所有用户的ID。我们使用SMEMBERS命令从Hash中取出用户ID,再使用xargs命令将其作为参数传入HGET命令中,获取用户的Hash值中是否存在此消息的ID。
使用Redis实现消息的按用户细分发送,可以减少无效的消息传递,提高信息传递效率。通过以上代码,我们可以看到Redis提供了灵活的数据结构和丰富的命令,可以被用来构建高性能的消息系统。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

Redis和Memcache的区别分析
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。 不过memcache还可用于缓存其他东西,例如图片、视频等等。 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。 Redis可以通过例如expire 设定,例如expire name 105、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。 都可以一主一从6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复8、Redis支持数据的备份,即master-slave模式的数据备份。
使用音信后为什么不加活跃指数
QQ音信可以通过下列方式来增加音信活跃指数:点送音信给电话或QQ每点送一次音信,活跃指数增加20。 发一条音信到网页(随便说说),活跃指数增加5。 发送到网页时,活跃指数在第二天增加。 当天多次发送音信到网页,活跃指数不累计增加。 赠送图标给其他用户每赠送1颗音信图标,帮其他用户点亮图标,活跃指数增加5。 首次点亮图标首次点亮音信图标,可获赠20个活跃指数。 音信贵族双倍特权音信贵族发送音信、赠送图标、首次点亮图标,活跃指数双倍增加。 活跃指数说明:普通用户活跃指数最高可达100,音信贵族活跃指数最高可达200。 所有用户活跃指数每天自动减1。 如果您的活跃指数没有实时增加,可能是网络延时造成,我们将在24小时内为您补送。
塞班证书20项权限指的是什么?
1)NetworkServices:用于使用移动网络。 2)LocalServices:用于通过U S B、红外和蓝牙发送或接收消息。 3)ReadUserData:准许读取用户数据。 4)WriteUserData:准许写入用户数据。 5)Location:准许访问手机的位置信息。 6)UserEnvironment:准许访问用户及其附近环境的实时保密信息。 7)PowerMgmt:准许在系统中中断任何进程或者转换机器状态。 8)SwEvent:准许生成或者捕获键盘以及笔输入事件。 9)ReadDeviceData:准许读取系统设备驱动数据。 10)WriteDeviceData:准许写入系统设备驱动数据。 11)SurroundingsDD:准许访问提供外围设备输入信息的逻辑设备驱动。 12)TustedUI:区分”normal”应用和”trusted”应用的UI。 13)ProtServ:准许服务器应用可以用一个受保护的名字进行注册。 14)NetworkControl:准许修改或者访问网络协议控制。 15)MultimediaDD:准许对所有多媒体设备驱动的访问。 16)CommDD:准许访问通信设备驱动。 17)DiskAdmin:准许进行硬盘管理操作,例如格式化驱动器。 18)DRM:准许访问DRM保护的内容。 19)TCB:准许在终端中访问/*s以及/resource目录。 20)AllFiles:准许系统中的所有文件可见,可对在/private下的文件进行写操作。
发表评论