希望大佬能指点一二呀= =,
1
gaius 2018-11-07 10:20:53 +08:00
循环查 redis 是什么意思?
|
2
lanqing OP @gaius 因为 redis 中的数据是动态加入进去的,当那个 socket 没有查到他想要的数据的时候,就会过个两秒钟接着去 redis 中查数据,一直到查到为止
|
3
xiaoxinshiwo 2018-11-07 10:34:40 +08:00
redis 不是有发布和订阅机制吗?
再不然使用消息中间件,订阅 topic 然后监听接收消息啊 |
4
changnet 2018-11-07 10:36:18 +08:00 via Android
redis 是 kv 结构,为啥是循环查找而不是按 key 取
10000 个 socket 连接是支持的 说实在,不知道具体业务。不知道 client 是面对用户还是内部接口,不知道请求频率,不知道数据结构,这种问题发出来也没什么人帮得了你 |
5
newtype0092 2018-11-07 10:37:01 +08:00
你只是想实现一个队列消息加服务端推送吧。。。
|
6
ipoh 2018-11-07 10:37:23 +08:00
不用多线程的模型,用异步的方式
服务器这边维护一个{clientID->socket 句柄}的哈希表 然后启一个线程去循环查 redis 每个元素,元素的在上面哈希表中就用对应的 socket 句柄发送过去 |
7
richzhu 2018-11-07 10:39:46 +08:00
0.0 客户端知道自己想要什么吧? 客户端想要的称之为 Key, 然后服务端可以根据 Key 去 redis 取? 取到的值叫 value ? 酱紫。。不需要循环吧?
|
8
niubee1 2018-11-07 10:42:27 +08:00
我倒是很想知道什么样的人会设计 redis 用循环的方式读取数据, 莫不是来搞笑的
|
9
lauix 2018-11-07 10:42:33 +08:00
你这样是 client 主动拉取,为什么不主动推送。
不想自己写,可以用现成的 比如 MQTT 协议,ZMQ , T-IO 等开业项目。 |
10
lanqing OP @xiaoxinshiwo 非常感谢,发布和订阅机制能帮助我
|
11
knightlhs 2018-11-07 10:44:07 +08:00
10000 个 cient 也不过是 10000 个 list 而已
每个 client 去查找自己的 list 找到数据就返回 找不到就阻塞 直到 超时就好啊 你只要根据数据不同 分发到不同的 list 去就可以了 你这个 redis 没学好啊 redis 支持那么多种用法跟结构啊 |
12
Outliver0 2018-11-07 10:44:29 +08:00
epoll
|
13
lanqing OP @lauix 感谢,对,可以理解是 client 主动拉取,但是不还是需要 client 主动过来建立链接,然后才能发送过去吗= =
|
15
lauix 2018-11-07 10:51:38 +08:00
@lanqing 打错字了,是开源。
client 当然要连接 server 端了,但是 client 只接收消息,server 端 有数据的时候,主动发送到 client。 和其他人说的 发布订阅一个道理 。可以自己写,可以采用其他开源的项目。 |