Git Product home page Git Product logo

microsoftarchive / redis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from redis/redis

20.7K 1.4K 5.4K 250.46 MB

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes

Home Page: http://redis.io

License: Other

Makefile 0.23% C 74.66% C# 0.34% Shell 0.41% PowerShell 0.12% C++ 6.17% Tcl 15.72% Ruby 1.73% Smarty 0.03% Batchfile 0.02% Objective-C 0.56%

redis's Introduction

Windows Status NuGet version Chocolatey version Chocolatey downloads

This project is no longer being actively maintained. If you are looking for a Windows version of Redis, you may want to check out Memurai. Please note that Microsoft is not officially endorsing this product in any way.

Redis on Windows

  • This is a port for Windows based on Redis.
  • We officially support the 64-bit version only. Although you can build the 32-bit version from source if desired.
  • You can download the latest unsigned binaries and the unsigned MSI installer from the release page.
  • For releases prior to 2.8.17.1, the binaries can found in a zip file inside the source archive, under the bin/release folder.
  • Signed binaries are available through NuGet and Chocolatey.
  • Redis can be installed as a Windows Service.

Windows-specific changes

  • There is a replacement for the UNIX fork() API that simulates the copy-on-write behavior using a memory mapped file on 2.8. Version 3.0 is using a similar behavior but dropped the memory mapped file in favor of the system paging file.
  • In 3.0 we switch the default memory allocator from dlmalloc to jemalloc that is supposed to do a better job at managing the heap fragmentation.
  • Because Redis makes some assumptions about the values of file descriptors, we have built a virtual file descriptor mapping layer.

Redis release notes

There are two current active branches: 2.8 and 3.0.

How to configure and deploy Redis on Windows

How to build Redis using Visual Studio

You can use the free Visual Studio 2013 Community Edition. Regardless which Visual Studio edition you use, make sure you have updated to Update 5, otherwise you will get a "illegal use of this type as an expression" error.

  • Open the solution file msvs\redisserver.sln in Visual Studio, select a build configuration (Debug or Release) and target (x64) then build.

    This should create the following executables in the msvs$(Target)$(Configuration) folder:

    • redis-server.exe
    • redis-benchmark.exe
    • redis-cli.exe
    • redis-check-dump.exe
    • redis-check-aof.exe

Testing

To run the Redis test suite some manual work is required:

  • The tests assume that the binaries are in the src folder. Use mklink to create a symbolic link to the files in the msvs\x64\Debug|Release folders. You will need symbolic links for src\redis-server, src\redis-benchmark, src\redis-check-aof, src\redis-check-dump, src\redis-cli, and src\redis-sentinel.
  • The tests make use of TCL. This must be installed separately.
  • To run the cluster tests against 3.0, Ruby On Windows is required.
  • To run the tests you need to have a Unix shell on your machine, or MinGW tools in your path. To execute the tests, run the following command: "tclsh8.5.exe tests/test_helper.tcl --clients N", where N is the number of parallel clients . If a Unix shell is not installed you may see the following error message: "couldn't execute "cat": no such file or directory".
  • By default the test suite launches 16 parallel tests, but 2 is the suggested number.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

redis's People

Contributors

alexmchale avatar antirez avatar anydot avatar badboy avatar catwell avatar charsyam avatar enricogior avatar erikdubbelboer avatar florean avatar geoffgarside avatar hampus avatar jbergstroem avatar jokea avatar lamby avatar lucsky avatar mariano-perez-rodriguez avatar mattsta avatar melo avatar michael-grunder avatar nanxiao avatar pietern avatar saj avatar soveran avatar stamhe avatar sunheehnus avatar tnm avatar yamt avatar yoav-steinberg avatar yossigo avatar zeliard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redis's Issues

Remove pthreads

We should remove pthreads and use Windows native Thread support instead.

Nuget package

It would be nice if you guys put together a Nuget package with the latest binaries.

Building by hand is a bit of a pain when it comes to (re)distribution.

No result for keys * for relatively large number of keys.

No result for keys * for relatively large number of keys, by relatively large meaning more than 5200 keys. It is seen for number of keys less than 5100 , the expected multi bulk output is returned.

To reproduce this, populate the database with appropriate number of normal keys.

Sample Output

Working for keys <= 5100
    [6684] 03 Aug 18:57:04 * The server is now ready to accept connections on port 5970
    [6684] 03 Aug 18:57:04 - Accepted 127.0.0.1:61913
    [6684] 03 Aug 18:57:04 - 1 clients connected (0 slaves), 452324 bytes in use
    [6684] 03 Aug 18:57:09 - DB 0: 5106 keys (0 volatile) in 8192 slots HT.

redis-cli.exe output : of **keys *** [trimmed]

   5104) "3929"
   5105) "4658"
   5106) "4659"
   redis 127.0.0.1:5970>
Observed scenario for keys >=5200
   [4312] 03 Aug 19:03:33 * The server is now ready to accept connections on port 7178
   [4312] 03 Aug 19:03:33 - Accepted 127.0.0.1:62110
   [4312] 03 Aug 19:03:33 - 1 clients connected (0 slaves), 452324 bytes in use
   [4312] 03 Aug 19:03:38 - DB 0: 5206 keys (0 volatile) in 8192 slots HT.

redis-cli.exe output :

   redis 127.0.0.1:7178>
   redis 127.0.0.1:7178> dbsize
   (integer) 5206
   redis 127.0.0.1:7178> keys *
   redis 127.0.0.1:7178> 
Another Scenario where the time is returned
Database 0 populated with more than 50000 keys:

    [7296] 03 Aug 18:43:08 - 0 clients connected (0 slaves), 3146972 bytes in use
    [7296] 03 Aug 18:43:13 - DB 0: 50006 keys (0 volatile) in 65536 slots HT.
    [7296] 03 Aug 18:43:13 - 0 clients connected (0 slaves), 3146972 bytes in use
    [7296] 03 Aug 18:43:18 - DB 0: 50006 keys (0 volatile) in 65536 slots HT.

redis-cli.exe output

   redis 127.0.0.1:8354> dbsize
   (integer) 50006
   redis 127.0.0.1:8354> keys *
   (0.65s)
   redis 127.0.0.1:8354>
Comparison with redis 2.4.16 stable release for non-windows operating systems

[Note: database is loaded from dump.rdb]

Database 9 populated with 1000000 keys:

   [2224] 03 Aug 18:39:47 * DB loaded from disk: 2 seconds
   [2224] 03 Aug 18:39:47 * The server is now ready to accept connections on port 21218
   [2224] 03 Aug 18:39:48 - DB 9: 1000000 keys (0 volatile) in 1048576 slots HT.
   [2224] 03 Aug 18:39:48 - 0 clients connected (0 slaves), 52581792 bytes in use
   [2224] 03 Aug 18:39:53 - DB 9: 1000000 keys (0 volatile) in 1048576 slots HT.
   [2224] 03 Aug 18:39:53 - 0 clients connected (0 slaves), 52581792 bytes in use
   [2224] 03 Aug 18:39:58 - DB 9: 1000000 keys (0 volatile) in 1048576 slots HT.

./redis-cli output of **keys *** [trimmed]

  999997) "415969"
  999998) "343798"
  999999) "343799"
  1000000) "415970"
  (186.04s)
  redis 127.0.0.1:21218[9]>

# ==> ..\src\db.c:482 'dictFind(db->dict,key->ptr) != NULL' is not true

I'm running redis 64bit, 2.4, the default branch; windows 2008 r2.
save settings:
save 900 1
save 300 10
save 60 10000
I keep getting
"# ==> ..\src\db.c:482 'dictFind(db->dict,key->ptr) != NULL' is not true"
in the log and redis-server.exe crashes.
I guess it happens when a bgsave is in progress, because a temp-XXXX.rdb, much smaller than dump.rdb, remains in the directory.
I have lots of expiring keys.
thanks in advance for any help.

Redis 2.6.8-pre2 x64 shows 32 bit in info

Looks like a minor issue, process seems to be 64 bit.
Many thanks for the 2.6 alpha release by the way, great stuff.

E:\work\redis\dotnet\redis-2.6_alpha\msvs\x64\Release\redis-server.exe
[4996] 29 Jan 07:28:25.833 # Warning: no config file specified, using the default config. In order to specify a config file use E:\work\redis\dotnet\redis-2.6_alpha\msvs\x64\Release\redis-server.exe /path/to/redis.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.6.8-pre2 (00000000/0) 32 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4996
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[4996] 29 Jan 07:28:25.880 # Server started, Redis version 2.6.8-pre2
[4996] 29 Jan 07:28:25.880 * The server is now ready to accept connections on port 6379

wsarecvflags not initialized

when I run client applicationusing hiredis and AE module in a windows 2003 server(x86),the
app crashed at aeWinReceiveDone:WSARecv, i fixed it,by add one line before the call WSARecv, wsarecvflags = 0.
I seek all the source file, I can't see a wsarecvflags init code。Why?

hiredis async sockets are not opened in non-blocking mode

You can test this out by creating a Win32 project, link against hiredis, and then do the following:

w32initWinSock();
auto pRedisContext = redisAsyncConnect("127.0.0.1", 6379);
redisAsyncHandleRead(pRedisContext);

The redisAsyncHandleRead() call blocks.

To fix this, you probably need to put the following into the win32 version of redisContextConnectTcp():
if (redisSetBlocking(c,s,blocking) != REDIS_OK)
return REDIS_ERR;

I did that just after the redisSetTcpNoDelay() and it seems to work nicely.

Sentinel? tilt on master failure

My symptoms are this:

When running Sentinel, any time I shut down the master, I get "tilt" errors on each of the sentinels. I can shut down the Slaves with no problem.

I'm running all my instances on the same PC (I've tried other configurations too, but this is the simplest one to describe).

My config files are:

Master

port 6379
timeout 0

Slave

port 6380
timeout 0
slaveof 127.0.0.1 6379
slave-serve-stale-data yes
repl-ping-slave-period 10
repl-timeout 60

Sentinel01

port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 900000
sentinel can-failover mymaster yes
sentinel parallel-syncs mymaster 1

Sentinel02

port 26380
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 900000
sentinel can-failover mymaster yes
sentinel parallel-syncs mymaster 1

Sentinel03

port 26381
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 900000
sentinel can-failover mymaster yes
sentinel parallel-syncs mymaster 1

assert in hiredis after unsubscribing last pubsub channel

In a Win32 application, linked against hiredis:

static void sRedisCommandCallbackFn2(struct redisAsyncContext_, void_, void* pUserData)
{
bool* pContinue = (bool*)pUserData;
*pContinue = true;
}

int main()
{
w32initWinSock();

auto pRedisContext = redisAsyncConnect("127.0.0.1", 6379);

bool bContinue = false;
redisAsyncCommand(pRedisContext, sRedisCommandCallbackFn2, &bContinue, "SUBSCRIBE foo");
redisAsyncHandleWrite(pRedisContext);

while(!bContinue)
{
    redisAsyncHandleRead(pRedisContext);
}

redisAsyncCommand(pRedisContext, sRedisCommandCallbackFn2, &bContinue, "UNSUBSCRIBE foo");
redisAsyncHandleWrite(pRedisContext);

while(!bContinue)
{
    redisAsyncHandleRead(pRedisContext);
}

bContinue = false;
redisAsyncCommand(pRedisContext, sRedisCommandCallbackFn2, &bContinue, "PING");
redisAsyncHandleWrite(pRedisContext);

while(!bContinue)
{
    redisAsyncHandleRead(pRedisContext);
}

return 0;
}

The code asserts in the last call to redisAsyncHandleRead(). The assert is async.c line 408 (or thereabouts):
assert(c->flags & REDIS_SUBSCRIBED);

At this point, the library is no longer subscribed to any pubsub channels, so it should be valid to send regular commands at this point. It is incorrect for __redisShiftCallback() to return REDIS_ERR in this situation.

Please release downloadable binaries

Folks should not be required to build the solution just to use the goodness of Redis. Where the binaries go is not of my concern, just that they are the official ones with a version attached to them and that they are publicly available. :)

Error compiling

I thought I followed your directions correctly, but upon compiling, I received 10 errors. Any ideas?

Error 4 error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 5 error LNK2005: __call_reportfault already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 6 error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 7 error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 8 error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 9 error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 10 error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 11 error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 12 error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj) C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\LIBCMT.lib(invarg.obj) RedisServer
Error 14 error LNK1169: one or more multiply defined symbols found C:\dev\redis\Microsoft-Interop-redis-34c3eb3\msvs\Debug\redis-server.exe 1 1 RedisServer

Add Documentation

We should add documentation to the wiki pages:

  • links to redis configuration
  • explain watcher.conf format

Binary version

Hello,

it would be very helpfull if someone can provide a binary download of the redis windows version.
I, and I think a lot of others too, do not have visual studio installed.

connection not close

excuse me,my english is not good

redis-server.exe --loglevel verbose

reproduce problem:
redis-benchmark.exe
press ctrl+c

on server screen, log show:
Accept 127.0.0.1:xxxx
Accept 127.0.0.1:xxxx
Accept 127.0.0.1:xxxx
....
Client closed connection <-- here,only one connection closed
99 clients connected

after run many times,server say:
Error registering fd event for the new client: Result too large
904 clients connected

redis-cli.exe can't connect to server

fast reproduce problem:
redis-benchmark.exe -l

Bug, redis server cannot accept enough client.

The redis server will return error if fd is large than eventLoop->setsize (in ae.c aeCreateFileEvent function), and the fd is returned by aeWinAccept function in anet.c, which instead the accept function of raw redis server code.
This code will cause problem, in my test, accept in linux will return a value increase 1 every time, but aeWinAccept which call socket function will return a value increase 4 or 12 every time, so if eventLoop->setsize is set to 11024, the redis server will only accept about 11024/12 client connection concurrently. Then the redis server will refuse the new connection and shows ERANGE error.
My test environment is 64bits windows7 and 64bits windows 2003.

My solution is add a array in aeEventLoop to map real fd to events index, and change the access of eventLoop->events[fd] to eventLoop->events[getEventIndex(fd)]

Upgrade project files to VS 2012

Hi,

What do you guys say about upgrading the project files to support VS 2012? When one tries to open the solution in VS 2012 the following message appears:
Error 2 error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets
It's easliy solved by setting <PlatformToolset>v110</PlatformToolset> in each project file. I could of course install VS 2010 but if we could upgrade to 2012 that would be perfect. I could not find any bugs when doing this.

RedisWatcher Windows Server 2003 support

I'm trying to run RedisWatcher on a Windows Server 2003 box and keep getting the error:

The procedure entry point EventRegister could not be located in the dynamic link library ADVAPI32.dll

From looking at the MSDN documentation, it suggests this function was introduced in Windows Server 2008.

Should Windows Server 2003 be support with the current release? Will it be considered for the future?

Master resurrection problem

According to Redis official documentation Sentinels have functionality of resurrecting of the old master as a new slave (see http://redis.io/topics/sentinel section “Resurrecting master”) if the old master is online again. But it seems there is no resurrection in the version I've tried.
Repro steps:

  1. Start Redis master server with two slaves and two sentinels
  2. Close master server
  3. Wait until the failover is done
  4. Start master server again
  5. There is no new Sentinel’s actions observed, although resurrecting should have been started according to the spec.

about the maxmemory

OS : windows server 2003 32bit
RAM: 8G (free)

But the redis-server.exe Out of memory when it's memory just to 2G.

the message is : "zmalloc: Out of memory trying to allocate 52 bytes"

MinGW support

Can developers compile redis for Windows via MinGW? It would be nice to not have to depend on Visual Studio.

redis-benchmark throwing socket error 10022

Running redis-benchmark.exe on Windows 8 almost always fails after PING test complete. Output:
====== PING_INLINE ======
10000 requests completed in 0.07 seconds
50 parallel clients
3 bytes payload
keep alive: 1

68.85% <= 1 milliseconds
100.00% <= 1 milliseconds
135135.14 requests per second

Could not connect to Redis at 127.0.0.1:6379: setsockopt(TCP_NODELAY): 10022

about once every 5 times it will continue after the PING test but will still fail later:
====== LPOP ======
10000 requests completed in 0.07 seconds
50 parallel clients
3 bytes payload
keep alive: 1

68.32% <= 1 milliseconds
100.00% <= 1 milliseconds
140845.08 requests per second

Could not connect to Redis at 127.0.0.1:6379: setsockopt(TCP_NODELAY): 10022

Restore throws error "Error in payload or checksum"

I'm trying to execute redis commands using nodeJs(node_redis from https://github.com/nitesh123/node_redis ) for windows

After dumping a key the encoded value returned has 10 extra bits appended to it.
On restore of dumped key with this encoded value these extra 10 bits are decoded and checked for its integrity

5c4de344-9771-11e2-889e-b1dda04d05b7

In the above image what i did is
set key value
dump key
which returned a encoded string value

and then on restore the first 2 bits of the value of footer variable is checked against REDIS_RDB_Version (which is 6) and since the value donot match it throws the checksum error. Please refer the below image

New

Install Redis as a Windows service?

Hi,

By default, we apparently cannot install Redis Server 2.4/2.6 as a Windows service.

So, we would like to know if there is a way to install it as a Windows service?

Moreover, in a previous "issue", you were talking about RedisWatcherSvc as a solution:
#1

Our understanding is that RedisWatcherSvc is basically a watchdog that will restart Redis instance(s) if necessary.

When RedisWatcherSvc starts a Redis Instance, is it the Redis console application launched or Redis is running in background?

Thanks,

Thierry

Error running RedisInstWA.exe

Hi
When i tried running RedisInstWA.exe with source as redis-server physical path it threw an error saying "Path not found"
this is what i tried

  RedisInstWA.exe -source samples/redis-server.exe  -config samples -redisconfig samples -emu 

Then i tried giving url instead of source path and i threw an error saying "Did not find redisbin64.zip"
This is what i tried

  RedisInstWA.exe -source https://github.com/MSOpenTech/redis/archive/2.6.zip -x64  -config samples -redisconfig samples -emu 

and this is the error
error_redis_2 6_zip

Is Redis 2.4 stable for production?

Hello,

I would like to know if your Redis 2.4 version can be used in production (on a Windows 2008 Server 64 bits) or if it's only for development purpose?

Who can assist us if we have some issues using it?

Moreover, we would like to use the "Sentinel" feature with Redis 2.6. Do you known when a stable version will be available?

Thanks

redis server crash

[1936] 12 Aug 11:09:03.375 * DB saved on disk
[1936] 12 Aug 11:09:03.381 * Background saving terminated with success
[1936] 12 Aug 11:09:03.383 * cowBkgdSaveReset deleting 5 SDS and 7060 obj items
[1936] 12 Aug 11:09:28.803 # Out Of Memory allocating 743763 bytes!

the memory is enough and the memory of redis server is only 110MB

Port Redis 2.6

Please port Redis 2.6 to Windows. Redis 2.6 contains critical new features, such as LUA scripting for transactions.

Assertion failure on SHUTDOWN

Hi,

When I issue a SHUTDOWN command to the server I get the following assertion failure:

crt\src\close.c Line:46
(fh >= 0 && (unsigned)fh < (unsigned)_nhandle

To reproduce:

  • Run redis-server.exe
  • Run redis-cli.exe
  • Enter SHUTDOWN in the client

inconsistency (with Linux implementation) for float rounding

MS 2.6.8-pre2 / x64 on Windows 8 x64:
redis 127.0.0.1:6379> set foo 2
OK
redis 127.0.0.1:6379> incrbyfloat foo 1.1
"3.1000000000000001"
redis 127.0.0.1:6379> incrbyfloat foo 5.0
"8.0999999999999996"
redis 127.0.0.1:6379> incrbyfloat foo -2.0
"6.0999999999999996"
redis 127.0.0.1:6379> incrbyfloat foo -1.0
"5.0999999999999996"
redis 127.0.0.1:6379> incrbyfloat foo -5.0
"0.09999999999999965"
redis 127.0.0.1:6379> incrbyfloat foo 2.0
"2.0999999999999996"
redis 127.0.0.1:6379> get foo
"2.0999999999999996"
And this is the main 2.6.9 on Centos x64
redis 127.0.0.1:6379> set foo 2
OK
redis 127.0.0.1:6379> incrbyfloat foo 1.1
"3.1"
redis 127.0.0.1:6379> incrbyfloat foo 5.0
"8.1"
redis 127.0.0.1:6379> incrbyfloat foo -2.0
"6.1"
redis 127.0.0.1:6379> incrbyfloat foo -1.0
"5.1"
redis 127.0.0.1:6379> incrbyfloat foo -5.0
"0.1"
redis 127.0.0.1:6379> incrbyfloat foo 2.0
"2.1"
redis 127.0.0.1:6379> get foo
"2.1"

Redis-sentinel: not able to establish correct connection

When running redis-server using the --sentinel flag, the sentinel connects to master, but is unable to retrieve the list of slaves, nor other sentinels. This prevents the sentinels from acting as a quora, and promoting a slave when the master goes down.

I'm running some proof-of-concepts on my local machine to mimic a possible Redis HA topology. My local machine is Windows 7 x64; I've disabled (all profiles) the Windows Firewall, and shut down any network protection services running (i.e., Symantec,etc.)

I've built from the 2.6 branch (small change to remove the erroneous merge flags in redis-cli.c). I run the run_all.cmd (see below) from an elevated command prompt.

In order to reproduce the error, I've pushed my local test environment/configuration up to:
http://github.com/jstclair/redis-sentinel-win-demo

I've also included the original redis.conf (renamed in root as redis-default.conf) and sentinel.conf (sentinel-default.conf) for comparison.

When I run the run_all.cmd, after hitting space twice, the redis sentinels masters command returns (relevant parts):

  1. "num-slaves"
  2. "0"
  3. "num-other-sentinels"
  4. "0"
  5. "quorum"
  6. "3"

Watching the master server console, I see that it has accepted connections from everyone (it lists "6 clients connected (2 slaves)", but each sentinel merely cycles through:

[7360] 15 May 13:35:08.854 . +cmd-link master mymaster 127.0.0.1 6379
[7360] 15 May 13:35:08.855 . +pubsub-link master mymaster 127.0.0.1 6379
[7360] 15 May 13:35:13.854 # +sdown master mymaster 127.0.0.1 6379
[7360] 15 May 13:35:23.955 . +cmd-link master mymaster 127.0.0.1 6379

I'm not sure what's exactly going on; perhaps a missing pubsub channel?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.