- 10 1月, 2018 7 次提交
-
-
由 heqin 提交于
-
由 antirez 提交于
Related to #4498.
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
由 Tomasz Poradowski 提交于
- when redis-cli is running in a TTY - always enable command history buffering, regardless if history file path can be successfully determined
-
由 antirez 提交于
Fix #3665.
-
由 nashe 提交于
-
- 05 1月, 2018 1 次提交
-
-
由 gnuhpc 提交于
-
- 05 12月, 2017 7 次提交
-
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
由 antirez 提交于
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
- 04 12月, 2017 5 次提交
-
-
由 antirez 提交于
The function in its initial form, and after the fixes for the PSYNC2 bugs, required code duplication in multiple spots. This commit modifies it in order to always compute the script name independently, and to return the SDS of the SHA of the body: this way it can be used in all the places, including for SCRIPT LOAD, without duplicating the code to create the Lua function name. Note that this requires to re-compute the body SHA1 in the case of EVAL seeing a script for the first time, but this should not change scripting performance in any way because new scripts definition is a rare event happening the first time a script is seen, and the SHA1 computation is anyway not a very slow process against the typical Redis script and compared to the actua Lua byte compiling of the body. Note that the function used to assert() if a duplicated script was loaded, however actually now two times over three, we want the function to handle duplicated scripts just fine: this happens in SCRIPT LOAD and in RDB AUX "lua" loading. Moreover the assert was not defending against some obvious failure mode, so now the function always tests against already defined functions at start.
-
由 antirez 提交于
The block is already inside if (allow_dup).
-
由 antirez 提交于
Unfortunately, as outlined by @soloestoy in #4505, "lua" AUX RDB field loading in case of duplicated script was still broken. This commit fixes this problem and also a memory leak introduced by the past commit. Note that now we have a regression test able to duplicate the issue, so this commit was actually tested against the regression. The original PR also had a valid fix, but I prefer to hide the details of scripting.c outside scripting.c, and later "SCRIPT LOAD" should also be able to use the function luaCreateFunction() instead of redoing the work.
-
由 antirez 提交于
-
由 antirez 提交于
With PSYNC2 to force a full SYNC in tests is hard. With this new DEBUG subcommand we just need to call it and then CLIENT KILL TYPE master in the slave.
-
- 01 12月, 2017 10 次提交
-
-
由 antirez 提交于
-
由 antirez 提交于
In the case of slaves loading the RDB from master, or in other similar cases, the script is already defined, and the function registering the script should not fail in the assert() call.
-
由 antirez 提交于
-
由 antirez 提交于
-
由 antirez 提交于
Related to #4483. As suggested by @soloestoy, we can retrieve the SHA1 from the body. Given that in the new implementation using AUX fields we ended copying around a lot to create new objects and strings, extremize such concept and trade CPU for space inside the RDB file.
-
由 antirez 提交于
See #4483. This is needed because luaCreateFunction() is now called from RDB loading code outside a client context.
-
由 antirez 提交于
This is currently needed in order to fix #4483, but this can be useful in other contexts, so maybe later we may want to remove the conditionals and always save/load scripts. Note that we are using the "lua" AUX field here, in order to guarantee backward compatibility of the RDB file. The unknown AUX fields must be discarded by past versions of Redis.
-
由 antirez 提交于
-
由 antirez 提交于
Doing the following ended with a broken server.executable: 1. Start Redis with src/redis-server 2. Send CONFIG SET DIR /tmp/ 3. Send DEBUG RESTART At this point we called execve with an argv[0] that is no longer related to the new path. So after the restart the absolute path of the executable is recomputed in the wrong way. With this fix we pass the absolute path already computed as argv[0].
-
由 antirez 提交于
-
- 30 11月, 2017 6 次提交
-
-
由 antirez 提交于
-
由 antirez 提交于
Splitting the popularity in half actually just needs decrementing the counter because the counter is logarithmic.
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
Firstly, use access time to replace the decreas time of LFU. For function LFUDecrAndReturn, it should only try to get decremented counter, not update LFU fields, we will update it in an explicit way. And we will times halve the counter according to the times of elapsed time than server.lfu_decay_time. Everytime a key is accessed, we should update the LFU including update access time, and increment the counter after call function LFUDecrAndReturn. If a key is overwritten, the LFU should be also updated. Then we can use `OBJECT freq` command to get a key's frequence, and LFUDecrAndReturn should be called in `OBJECT freq` command in case of the key has not been accessed for a long time, because we update the access time only when the key is read or overwritten.
-
由 zhaozhao.zz 提交于
-
由 zhaozhao.zz 提交于
-
- 29 11月, 2017 4 次提交
-
-
由 Felix Krause 提交于
-
由 Bo Cai 提交于
Signed-off-by: NBo Cai <charpty@gmail.com>
-
由 Bo Cai 提交于
Signed-off-by: NBo Cai <charpty@gmail.com>
-
由 Sébastien Fievet 提交于
-