redis mysql 多表_redis 存储mysql多行记录

我现在有一张mysql 表 message 叫消息记录表

表字段如下:

编号      Userid      Message       Publish_time        Type

1         2          注册成功        2015-10-20            1

2         3          注册成功        2015-10-12             1

3         3          恭喜你中大奖    2015-09-09            2

现在打算用redis来存储, 那么如何选用redis的哪种数据类型?

好像没找到合适的数据类型。。。。

如果采用hash类型 比如

hset message:2 userid 2 message 注册成功 publish_time 2015-10-20 Type 1

hset message:3 userid 3 message 注册成功 publish_time 2015-10-12 Type 1

但是上面的那种 恭喜你中大奖不知道怎么存储了 ???

redis是以键值对存储的,这不太好存储吧。可以考虑将mysql记录转为json格式存储到redis。

用经常用来查询的字段作为键,记录的json格式作为值存储。

比如用UserId作为键,则第一条记录为:

key:1

value:{“id”:1, “UserId”:2, “Message”:”注册成功”, “Publish_time”:”2015-10-20″, “Type”:1}

我在其他地方看到这种看看合适不,主要是采用了 redis的集合 + string 数据格式:

redis消息存储,选择合适的类型进行存储

用户定义的消息类型:

可以把这几个消息定义为频道 , 然后用户进行定义此频道利用此频道进行订阅消息

假设某个用户的uid 是 1

假设消息类型有

1:注册新用户 (channel_register)

2:用户抽奖中奖了(channel_lottery)

3:用户申请体现了(channel_deposit)

4:一个公共的消息所有用户都可以看的到(channel_common)

第一步:

我用集合存储所有的频道消息

127.0.0.1:6379> SADD member_channel channel_register channel_lottery channel_deposit channel_common

(integer) 4

127.0.0.1:6379> SMEMBERS member_channel

1) “channel_register”

2) “channel_common”

3) “channel_deposit”

4) “channel_lottery”

如何获取用户定义的消息呢?

我先设置一个用户定义的消息:

127.0.0.1:6379> set channel_register_1 “you register”

OK

127.0.0.1:6379> set channel_lottery_1 “lottery user_id is 1 “

OK

127.0.0.1:6379> set channel_deposit_1 “deposit user_id is 1”

OK

那么在获取用户定义的频道根据uid进行组合,然后使用

127.0.0.1:6379> get channel_register_1

“you register”

另外还有一种情况是:

我可能批量给用户发送消息 ,所以要把用户设置到一个频道里面 ,那么在新建一个集合,在和上面的集合 member_channel

取并集

//先定几个私有的频道

127.0.0.1:6379> SADD member_private_channel publish_money publish_score

(integer) 2

然后用户可以进行订阅这几个频道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值