Squashed commit of the following: commit ba143668b964885ca1b2cf3af927a49bec0f14a4 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jul 7 11:53:46 2015 +0200 [Fix] aeWinQueueAccept wrong return value. [Change] Variable name acceptsocket changed to acceptfd. commit 75f6769fd52fe8215bd1a2149f1bd115078ea278 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jul 6 17:26:55 2015 +0200 [Fix] Closing handled before returning. [Cleanup] Tabs->spaces. commit 4f22c9be7dee2f34f2cbf5b8a4fd50b87b443937 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jul 6 17:15:20 2015 +0200 [Change] Removed extra space allocated at the end of the mmap file. [Log] Improved error messages. commit f306348c243493b192eaeee9aed404ec065bb60c Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Sat Jul 4 12:08:41 2015 +0200 [Fix] RFDMap was not thread safe. [Cleanup] Removed unused/commented out code, tabs->spaces. commit 8da060bf484898932f2ecd02c099266eb31d4d80 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Sat Jul 4 12:02:58 2015 +0200 [Fix] UnhandledExceptiontHandler internal exception handling. commit 99e5e26fba4b48531cd2a544d5a22d6caba0f681 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Thu Jul 2 08:15:11 2015 +0200 [Cleanup] Removed unused include. commit d812c4ed57cdc30cd817ad2e9181f5bf239dc07b Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 20:36:13 2015 +0200 [Cleanup] Removed useless platform definition from RedisServer.sln commit 0401c167120876ca5533beb0bc6054d6401e8b65 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 20:32:51 2015 +0200 [Cleanup] Changed variable type to match function return value. checkForSentinelMode() returns an int, not a bool. commit 6a9ccd3906d5c007d4683d9caea64da78e5ed668 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 20:27:21 2015 +0200 [Cleanup] Minor change to method signature. The method input parameter has been changed to a const. commit e60f617b543edff46ceebb9362f01619e2188594 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 20:16:00 2015 +0200 [Cleanup] Removed non-existent file from hiredis project. commit 8d17c3dd052083ec4e47176921337822299167b1 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 19:58:59 2015 +0200 [WinPort] Explicit cast. commit 426841dc8c454a2afbc44c8f005cb3bf31b20cd5 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 17:07:22 2015 +0200 [Change] Move ReleasePackagingTool to its own solution. [Cleanup] Removed unused code in ReleasePackagingTool. [Changed] Chocolatey package now imports documents from the same folder where binaries are. commit 6ed0696c7902d6dc268fd34f55bce95783bc4286 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jul 1 13:58:58 2015 +0200 [Fix] Ignore SymInitialize() return value to make sure Stack Trace is logged when redis-server is running as a Windows service. commit f5e18675c9046492e7dd5a2593c2f890627a093d Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 30 19:06:59 2015 +0200 [Change] EventLog.dll excluded from NuGet package. commit 1ae80857b6fe1b5f352d247376c8fbbd94e81dfc Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 29 16:02:25 2015 +0200 Updated scripts to create and push the NuGet and Chocolatey packages. - [Change] the binaries are now downloaded from the github release. - [Change] Redis.nuspec: don't copy the files from the "documentation" folder since the documentation is already included with the binaries. - [Fix] PullBinaries.ps1: replaced hardcoded Redis version number with input parameter. - [Fix] improved error handling. commit c8e70630693a4f505177623824dff998602e62b4 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 29 12:21:58 2015 +0200 Fork code for background processing needed fixes and code refactoring. - [Fix] BeginForkOperation_Aof()/_Rdb()/_Socket() and BeginForkOperation() code refactoring. - [Fix] rewriteAppendOnlyFileBackground() code refactoring to minimize the code changes for WIN32. - [Fix] rewriteAppendOnlyFileBackground() must update the latency monitor, the fork stats and replicationScriptCacheFlush(). - [Fix] rdbSaveBackground() code refactoring to minimize the code changes for WIN32. - [Fix] rdbSaveBackground() must update the latency monitor and the fork stats. - [Fix] memory leak in rdbSaveToSlavesSockets(). - [Fix] properly releasing resources in rdbSaveToSlavesSockets(). - [Fix] QForkChildInit() not setting the operationFailed event in case of exception. - [Fix] QForkChildInit() AV in catch() statement. commit f1007fcaad5ceb17d27fcca081b8dbcf8906ee92 Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Fri Jun 26 11:54:09 2015 +0200 [Fix] deleting char** correctly (@zeliard) commitb8009c220aAuthor: Alexis Campailla <alexis@janeasystems.com> Date: Wed Jun 24 23:10:27 2015 +0200 Fix 32-bit build commit4f384b9e58Author: Alexis Campailla <alexis@janeasystems.com> Date: Wed Jun 24 21:36:57 2015 +0200 Update appveyor version commitb84d390111Author: Alexis Campailla <alexis@janeasystems.com> Date: Wed Jun 24 20:53:17 2015 +0200 Fix child process handle closing commitfdbf5328c2Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 17:43:54 2015 +0200 MapViewOfFileEx() error handling, UnhandledExceptiontHandler fixes. [log] Improved error message if MapViewOfFileEx() fails. [fix] Child process call exist(1) if MapViewOfFileEx() fails. [new] GetForkOperationStatus() now detects if the child process is not anymore running. [fix] Error reporting in UnhandledExceptiontHandler() for "UNKNOWN EXCEPTION". [new] UnhandledExceptiontHandler() now calls the default C++ unhandled exceptiont handler. [log] Changed the closing statement of the BUG REPORT. [comment] Removed commented out code in Win32_dlmalloc.c. commit05b20f0e4bAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 13:05:53 2015 +0200 Change BUG REPORT closing message to point to a different git hub page. commit1cb3e84814Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 11:59:45 2015 +0200 ReleasePackagingTool changes: [change] the release notes file is not anymore generated from a template [change] the .md files are not anymore generated from the .docx files [new] added redis-server.pdb symbols to the zip package file [fix] create the release package directory if it doesn't exist commit8ea708f9e1Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 01:21:27 2015 +0200 New release notes format (similar to Redis on UNIX) commite2df601222Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 01:16:02 2015 +0200 Fixed broken link in README. commit93d00065e4Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 24 01:12:49 2015 +0200 Minor update to the README. commitbd2ee4d2daAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 23:40:50 2015 +0200 Warning message in config files for the maxmemory flag. commit2943ec7db6Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 21:56:31 2015 +0200 Cleaned up the UnhandledExceptiontHandler() code. Minor changes. commitb805f2be89Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 19:02:03 2015 +0200 Calling abort() in redisOutOfMemoryHandler(). Changed out-of-memory error report. commit18a653318dAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 18:55:53 2015 +0200 Commented out printf calls in dlmalloc. commitf01052fb5dAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 18:44:32 2015 +0200 Changed #if defined(_WIN64) to #ifdef _WIN64 It was causing an appveyor build failure. commita4865f06a9Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 18:15:20 2015 +0200 'save' config flag added to the 'incompatibleNoPersistenceCommands' list. The fix prevents redis-server from crashing if the 'save' flag is set and 'persistence-available' is set to 'no'. commit3de4f6cb47Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 16:54:23 2015 +0200 Change misleading variables/functions names: master->parent, slave->child. Master and Slave labels were using for the Parent and Child processes. commit453b582eedAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 13:46:45 2015 +0200 Updated authors and description for nuget and chocolatey. commite91c9eeef7Merge:5c05765dc3285aAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 13:40:41 2015 +0200 Merge branch '2.8-enrico' of https://github.com/janeasystems/redis-private into 2.8-enrico commitdc3285af0bAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 23 11:42:51 2015 +0200 Update Redis on Windows Release Notes.md commit5c05765d9aAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 21:23:08 2015 +0200 Typos in warning message. commit510cc9bd3eAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 19:57:52 2015 +0200 Replaced AddVectoredExceptionHandler with SetUnhandledExceptionFilter for unhandled exception handling. Added log warning if the maxmemory flag is not set. commit4993487b25Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 17:33:41 2015 +0200 Fixed links in README. commit710d179f91Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 17:25:21 2015 +0200 Added text to links. commit04c1ba4c56Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 17:15:48 2015 +0200 Updated documentation. commit019d317a10Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 13:58:40 2015 +0200 Use MEM_TOP_DOWN flag to allocate memory for memtest. commit3b4bd2f84eAuthor: NickMRamirez <nramirez@hmbnet.com> Date: Wed Jun 10 15:12:07 2015 -0400 Added logic to prevent firewall exception from being added if the Windows Firewall Windows service is stopped. (cherry picked from commit 12383540c65236b2657f74178d6c2e4ec0c4d15a) Conflicts: msvs/msi/RedisMsi/RedisMsi.wixproj commit3935ffb302Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 12:35:10 2015 +0200 RejoinCOWPages and background threads should be synchronized (part 2) commit87e43c5ce6Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 22 11:23:04 2015 +0200 Changed error message. commitaf7ca8ca28Author: Alexis Campailla <alexis@janeasystems.com> Date: Fri Jun 19 21:22:48 2015 +0200 RejoinCOWPages and background threads should be synchronized RejoinCOWPages is copying dirty pages to a new view of the memory map. If another thread modifies the heap between when RejoincCOWPages copies the data and when the view is remapped, the modification will be lost, leading to a memory corruption. In short, when RejoincCOWPages is running, all other threads must be stopped. Fixes: https://github.com/MSOpenTech/redis/issues/244 commit3cd7d92bf3Author: Alexis Campailla <alexis@janeasystems.com> Date: Fri Jun 19 19:31:22 2015 +0200 Build ReleasePackagingTool in Debug for Debug solution configuration commit4742811f48Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Fri Jun 19 12:05:32 2015 +0200 Comment wording. commit2c8c937325Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Fri Jun 19 00:24:32 2015 +0200 Cleaned up a few #ifdef _WIN32. commit2772b6388eAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Fri Jun 19 00:22:32 2015 +0200 Indentation. commitf8cc98586eAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Fri Jun 19 00:20:19 2015 +0200 StackTrace and info report. commitd6ede8b354Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Thu Jun 11 17:03:08 2015 +0200 Moved RedisLog.* to Win32_Interop and renamed to Win32_RedisLog.* Deleted unused file msvs/RedisLog.h commit13f36c88e0Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Thu Jun 11 16:05:41 2015 +0200 Added symbols to MSI. Also updated the release number to 2.8.21. commitc68970e268Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Thu Jun 11 15:30:04 2015 +0200 Enabled dlmalloc DEBUG mode in the debug build. commit1cf1db97aeAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 10 23:08:53 2015 +0200 Final portability fixes for 'long' type. commit365c4c7559Merge:fb63c21fbb9d61Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 10 12:32:11 2015 +0200 Merge version 2.8.21 from antirez into 2.8 Changes to be committed: modified: 00-RELEASENOTES modified: deps/lua/src/ldo.c modified: deps/lua/src/lua_cmsgpack.c modified: src/scripting.c modified: src/version.h commitfb63c21f81Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 10 12:15:57 2015 +0200 Comment. added a note in case 32bit support will be brought back. commitbf260ec746Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Wed Jun 10 00:43:46 2015 +0200 Test portability fix. the 'redis-sentinel' binary is not currently built on Windows, the quick workaround is to call 'redis-server --sentinel' commit2975545e6aAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Tue Jun 9 17:21:56 2015 +0200 Restored support for the command argument --test-memory along with -h, --help, -v, --version commit64c14409d9Author: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 8 20:40:08 2015 +0200 Added back the RealeasePackaingTool project in the RedisServer.sln build It was removed by mistake in a previous commit. commiteaf29cc8aaAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 8 20:35:31 2015 +0200 Truncate AOF in case of unexpected EOF. The Win32 port was not truncating the AOF file. commit91d01bf8fbAuthor: Enrico Giordani <enrico.giordani@gmail.com> Date: Mon Jun 8 16:23:53 2015 +0200 Win32 portability for tests: fix the syntax to invoke 'tail'. tail -nX file -> tail -X file commitfbb9d619f7Author: antirez <antirez@gmail.com> Date: Thu Jun 4 12:00:21 2015 +0200 Fix 2.8.21 release notes to give full credits. commit7f8b865a65Author: antirez <antirez@gmail.com> Date: Thu Jun 4 11:32:24 2015 +0200 Redis 2.8.21 commit700b863f13Author: Ben Murphy <benmmurphy@gmail.com> Date: Mon May 11 23:24:37 2015 +0100 hide access to debug table commit5a1b22ad7fAuthor: Ben Murphy <benmmurphy@gmail.com> Date: Mon May 11 23:24:24 2015 +0100 disable loading lua bytecode commit1eeb9bd714Author: antirez <antirez@gmail.com> Date: Wed Jun 3 08:44:43 2015 +0200 Scripting: Lua cmsgpack lib updated to include str8 support Conflicts: 00-RELEASENOTES src/version.h tests/instances.tcl
3.7 KiB
3.7 KiB
Redis on Windows
Redis 2.8 Branch
- This is a port for Windows based on Redis 2.8.
- There is support for the 64-bit version. We have dropped official support for the 32-bit version, though you can build it from source if desired.
- You can download the latest binaries (unsigned) from http://github.com/MSOpenTech/redis/releases. 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 can be downloaded using Nuget and Chocolatey.
- There is a replacement for the UNIX fork() API that simulates the copy-on-write behavior using a memory mapped file.
- Because Redis makes some assumptions about the values of File Descriptors, we have built a virtual file descriptor mapping layer.
- Redis can be installed as a Windows Service.
Redis 2.8 release notes
- Redis on UNIX release notes
- Redis on Windows release notes
How to configure and deploy Redis on Windows
How to build Redis using Visual Studio
You can use the free Visual Studio Community edition available at http://www.visualstudio.com/products/visual-studio-community-vs.
-
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
Unit Testing
To run the Redis test suite requires some manual work:
- 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 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 some of the tests may fail when the number of clients is greater than 2.