Tag: redis

如何在多个Lua State(multithreading)之间传递数据?

我在redis.lua中启动了Redis连接池,通过从C调用,我得到了一个redis_lua_state ,这个Lua状态是全局启动一次,其他线程只能从它获取 。 虽然有一个HTTP请求(工作线程),我需要从redis_lua_state获取redis连接,然后再获取另一个Lua状态以加载其他Lua脚本,这些脚本将使用此redis连接与Redis通信,如何做到这一点? 或者如何设计我的Lua脚本以使其简单? 代码示例: /* on main thread, to init redis pool connection */ lua_State *g_ls = NULL; lua_State *init_redis_pool(void) { int ret = 0; g_ls = luaL_newstate(); lua_State *ls = g_ls; luaL_openlibs(ls); ret = luaL_loadfile(ls, “redis.lua”); const char *err; (void)err; /* preload */ ret = lua_pcall(ls, 0, 0, 0); lua_getglobal(ls, “init_redis_pool”); ret […]

hiredis Redis库是否为异步回调创建自己的线程

我在multithreading环境中使用Redis,并对其运行方式有疑问。 我在我的c ++应用程序中使用hiredis c库。 我的问题是:如果我在触发回调时使用异步模式,那么回调是否会在Redis客户端创建的另一个线程中处理? 因为创建调用的线程不会受到回调处理的影响吗? 谢谢!

使用libevent进行异步Redis池化

我想尽可能多地从Redis + Hiredis + libevent获得。 我正在使用以下代码(没有任何检查是简短的) #include #include #include #include #include #include #include typedef struct reqData { struct evhttp_request* req; struct evbuffer* buf; } reqData; struct event_base* base; redisAsyncContext* c; void get_cb(redisAsyncContext* context, void* r, void* data) { redisReply* reply = r; struct reqData* rd = data; evbuffer_add_printf(rd->buf, “%s”, reply->str); evhttp_send_reply(rd->req, HTTP_OK, NULL, rd->buf); evbuffer_free(rd->buf); […]

存储redis密钥的最佳方式

我使用Redis存储一些信息并检测该信息随时间的变化(例如,考虑用户和位置)。 使用更长或更短的键名有什么价值? 使用更长的密钥更清晰,但使用更长的密钥名需要大量内存或性能吗? 以下是示例: SET L:123456 ” …” HSET U:987654321 loc 123456 time 要么 SET loc:{123456} ” …” HSET user:{U987654321} loc 123456 time

有人可以解释redis setbit命令吗?

> setbit mykey 1 1 > setbit mykey 7 1 当我将字符串值1和7存储到“mykey”中时, 究竟存储在redis中的是什么? 以及getbit如何在redis中运行? 有没有人试图在这个值内循环这个位? 我知道bitcount会给我2号,但我也希望得到它的确切字符串值1和7,是否可能? – 我通过使用erlang redis客户端来读取输出做了一些实验。 > setbit mykey 1 1 erlang输出: <> 然后我删除这个条目: > del mykey 我做同样的事情来抵消2 4 8,在这里你可以看到映射: When offset is 1, the output is <>; When offset is 2, the output is <>; When offset is 4, the output is […]

什么是“*((char *) – 1)=’x’;”代码是什么意思?

我在阅读redis源代码时遇到问题,有人能告诉我_redisAssert函数中最后一个语句的_redisAssert是什么 : *((char*)-1) = ‘x’;