yj
2026-03-31 033d919018b3a3e12755f008c0b9093364942512
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
o
¶oohHã@s6ddlZddlZddlZddlmZGdd„dƒZdS)éN)Ú global_configc@s¼eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-S).Ú RedisManagerc    Cs8t ¡|_tj|jj|jj|jj|jjdddd|_dS)NTédé)ÚhostÚportÚdbÚpasswordZdecode_responsesZmax_connectionsZsocket_timeout)    rÚ
get_configÚconfigÚredisZ StrictRedisZ
REDIS_HOSTZ
REDIS_PORTZREDIS_DBZREDIS_PASSWORD)Úself©rú4E:\project\python\wecom-dify-bridge\redis_manager.pyÚ__init__s
 ùzRedisManager.__init__cCsf|jj›d|›d|›}t|tƒr'|j |¡|r%|jj|g|¢RŽdSdS|j |t     |¡¡dS)u缓存群组相关数据ú:group:ú:N)
r ÚREDIS_KEY_PREFIXÚ
isinstanceÚlistr ÚdeleteZsaddÚsetÚjsonÚdumps)r Úgroup_idÚ    data_typeÚdataÚkeyrrrÚcache_group_datas
 ÿzRedisManager.cache_group_datacCsV|jj›d|›d|›}| ¡}|dvr|j |¡pgS|j |¡}|r)t |¡SdS)u获取群组相关数据rr)ÚusersÚ sms_accountsN)r rÚlowerr ZsmembersÚgetrÚloads)r rrrrrrrÚget_group_datas  zRedisManager.get_group_datacCsN|jj›d|›d}||t ¡dœ}|j |t |¡¡|j ||jj¡dS)u添加用户消息到Redisú:user_messages:ú    :messages)ÚroleÚcontentÚ    timestampN)    r rÚtimer ZrpushrrÚexpireÚMESSAGE_EXPIRE)r Úuser_idr'r(rÚmessagerrrÚadd_user_message)sýzRedisManager.add_user_messagecCs8|jj›d|›d}|j ||¡|j ||jj¡dS)u添加会话idr%ú:conversation_idN)r rr rr+r,)r r-Úconversation_idrrrrÚadd_conversation_id4sz RedisManager.add_conversation_idcCs:|jj›d|›d}|j |dd¡}|rdd„|DƒSgS)u获取用户的所有消息r%r&réÿÿÿÿcSsg|]}t |¡‘qSr)rr#)Ú.0ÚmsgrrrÚ
<listcomp>>sz2RedisManager.get_user_messages.<locals>.<listcomp>)r rr Zlrange)r r-rÚmessagesrrrÚget_user_messages:szRedisManager.get_user_messagescCó |jj›d|›d}|j |¡S)u获取用户的conversation_idr%r0©r rr r")r r-rrrrÚget_user_conversation_id@ó z%RedisManager.get_user_conversation_idcCsB|jj›d|›}|›d}|›d}|j |¡|j |¡dS)u清除用户的消息缓存r%r&r0N©r rr r)r r-Z
key_prefixÚkey1Úkey2rrrÚclear_user_messagesEs
 
 
 z RedisManager.clear_user_messagescCs2|jj›d|›}|j |d¡|j |d¡dS)õ添加流列表ú:stream:ré´N©r rr rr+©r Ú    stream_idrrrrÚ
add_streamMszRedisManager.add_streamcCs:|jj›d|›d}|jj|g|¢RŽ|j |d¡dS)rArBú:chunksrCN)r rr Zlpushr+)r rFÚchunksrrrrÚadd_stream_chunksSszRedisManager.add_stream_chunkscCr9)u 获取流块rBrH)r rr ZrpoprErrrÚget_stream_chunkYr<zRedisManager.get_stream_chunkcCó4|jj›d|›d}|j ||¡|j |d¡dS)õ添加ai请求的状态rBú:statusrCNrD)r rFÚstatusrrrrÚadd_stream_status^ózRedisManager.add_stream_statuscCr9)rMrBrNr:rErrrÚget_stream_statusdr<zRedisManager.get_stream_statuscCrL)rMrBr0rCNrD)r rFr1rrrrÚadd_stream_conversation_idirQz'RedisManager.add_stream_conversation_idcCr9)rMrBr0r:rErrrÚget_stream_conversation_idor<z'RedisManager.get_stream_conversation_idcCr9)u检查键是否存在rBrH©r rr ÚexistsrErrrÚ exists_streamtr<zRedisManager.exists_streamcCsD|jj›d|›d}d}|jj|dD] }|j |¡|d7}qdS)u删除stream_idrBz:*r)ÚmatchéN)r rr Z    scan_iterr)r rFÚpatternÚcountrrrrÚdelete_stream_chunksys  
þz!RedisManager.delete_stream_chunkscCs6|jj›d|›}|j |d¡|j ||jj¡dS)u添加企业微信回调msgidú:msgid:rN©r rr rr+Z MSGID_EXPIRE©r ÚmsgidrrrrÚadd_wecom_msgidózRedisManager.add_wecom_msgidcCs6|jj›d|›}|j ||¡|j ||jj¡dS)u更新企业微信回调msgidr]Nr^)r r`Z    ai_answerrrrrÚupdate_wecom_msgid‡rbzRedisManager.update_wecom_msgidcCs"|jj›d|›}|j |¡dS)u删除企业微信回调msgidr]Nr=r_rrrÚdelete_wecom_msgidszRedisManager.delete_wecom_msgidcCó|jj›d|›}|j |¡S)u 获取msgidr]r:r_rrrÚget_wecom_msgid’ó zRedisManager.get_wecom_msgidcCre)umsgid是否存在r]rUr_rrrÚexists_wecom_msgid—rgzRedisManager.exists_wecom_msgidN)Ú__name__Ú
__module__Ú __qualname__rrr$r/r2r8r;r@rGrJrKrPrRrSrTrWr\rarcrdrfrhrrrrrs. 
   r)r rr*Úconfig_managerrrrrrrÚ<module>s