Skip to main content

redisim

Project description

使用redis stream实现im

redis key

  1. u:<uid> hash, 存放用户信息,例如name/avatar等
  2. s:<uid> stream, 这个队列用于接收/发送用户消息
  3. c:<uid> sorted set, 用于存放用户联系人(包括群组)
  4. gm:<gid> set, 用于存放群用户id
  5. gs:<gid> stream, 用于接收/发送群消息
  6. gi:<gid> hash, 存放群信息,例如name,还有一些配置信息(例如加群是否需要验证?)

redis module

redis module实现IM

IM.RECIVE

IM.RECIVE [uid] BLOCK [ms] COUNT [count] START [start]
获取历史消息,以及监听新的消息

IM.MESSAGE

IM.RECIVE [GROUP | USER] [uid | gid] [mid]
获取单条消息

IM.SEND

IM.SEND [uid] [tuid] [field value] [field value ... ]
发送单聊消息

IM.GSEND

IM.GSEND [uid] [gid] [field value] [field value ... ]
发送群聊消息

IM.USER

IM.USER [uid]
(get user info) 获取用户信息
IM.USER [uid] [field value] [field value ... ]
(create user or update user info)

IM.GROUP

IM.GROUP [gid]
(get group info)
IM.GROUP [gid] [uid] [field value] [field value ... ]
(create group or update group info)

IM.LINK

IM.LINK [uid] [tuid]
(add to user contact list)

IM.UNLINK

IM.UNLINK [uid] [tuid]
(remove from user contact list)

IM.JOIN

IM.LINK [uid] [gid]
(add to user group)

IM.QUIT

IM.QUIT [uid] [gid]
(remove from user group)

GUI

  1. using tornado WebSocketHandler to create websocket.
  2. using svelte create simple ui to send message (using localStorage to save message)

docker

docker run --rm --name=redisim -p 8888:8888 lloydzhou/redisim

python sdk

pip install redisim

demo

import asyncio
import redis.asyncio as redis
import redisim

async def main():
    client = redis.Redis(decode_responses=True)
    res = await client.im().recive(user_id, **kwargs)
    print(res)

asyncio.run(main())

lua script version

im = client.im(module=False)

apache/kvrocks

using lua script version with apache/kvrocks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redisim-0.0.5.tar.gz (7.5 kB view details)

Uploaded Source

File details

Details for the file redisim-0.0.5.tar.gz.

File metadata

  • Download URL: redisim-0.0.5.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for redisim-0.0.5.tar.gz
Algorithm Hash digest
SHA256 97b8e5897abd5d933943d85ff5235c84843885fce24edc6d4a1ad15cfc94eab9
MD5 4d8e6bd7bfd56f949306027311e5b827
BLAKE2b-256 0c47ba1dfce782782c00f26885249430be00b60957aa512c39bbfb65fc4888b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page