Windows下Redis中RedisQFork位置调整

时间:2024-10-12 08:04:55

redis-server.exe redis.windows.conf

使用上面命令启动redis服务的时候报了以下错误信息:

The Windows version of Redis allocates a memory mapped heap for sharing with

the forked process used for persistence operations. In order to share this

memory, Windows allocates from the system paging file a portion equal to the

size of the Redis heap. At this time there is insufficient contiguous free

space available in the system paging file for this operation (Windows error

0x5AF). To work around this you may either increase the size of the system

paging file, or decrease the size of the Redis heap with the --maxheap flag.

Sometimes a reboot will defragment the system paging file sufficiently for

this operation to complete successfully.

Please see the documentation included with the binary distributions for more

details on the --maxheap flag.

大概意思是:没有足够的可用空间,可以增加系统的大小分页文件,或减少Redis的堆的大小

使用--maxheap标志。

有时重启将充分整理系统分页文件(重启可以解决)

可以再启动命令后面加maxheap参数重新分配堆大小。

redis-server.exe redis.windows.conf --maxheap 200m

http://sanwen8.cn/p/1a3gMDZ.html

[1944] 14 Oct 10:01:31.577 #
The Windows version of Redis allocates a large memory mapped file for sharing
the heap with the forked process used in persistence operations. This file
will be created in the current working directory or the directory specified by
the 'heapdir' directive in the .conf file. Windows is reporting that there is
insufficient disk space available for this file (Windows error 0x70).

You may fix this problem by either reducing the size of the Redis heap with
the --maxheap flag, or by moving the heap file to a local drive with sufficient
space.
Please see the documentation included with the binary distributions for more
details on the --maxheap and --heapdir flags.

Redis can not continue. Exiting.

RedisQFork_4328.dat

Windows下Redis中RedisQFork位置调整

启动windows版本的Redis会在C盘创建一个RedisQFork打头的文件,改变存放位置的办法:

在redis.windows.conf下更改参数heapdir为./,表示是在当前目录

# The Linux version of Redis relies on the system call fork() to perform
# point-in-time snapshots of the heap. In addition to the AOF and RDB backup
# mechanism, the master-slave synchronization and clustering features are
# dependent on this behavior of fork(). In order for the Windows version to
# perform like the Linux version we had to simulate this aspect of fork().
# Doing so meant moving the Redis heap into a memory mapped file that can
# be shared with a child process.
#
# *** There must be disk space available for this file in order for Redis
# to launch. *** The default configuration places this file in the local
# appdata directory. If you wish to move this file to another local disk,
# use the heapdir flag as described below.
#
# The maxheap flag controls the maximum size of this memory mapped file,
# as well as the total usable space for the Redis heap. Running Redis
# without either maxheap or maxmemory will result in a memory mapped file
# being created that is equal to the size of physical memory. During
# fork() operations the total page file commit will max out at around:
#
# (size of physical memory) + (2 * size of maxheap)
#
# For instance, on a machine with 8GB of physical RAM, the max page file
# commit with the default maxheap size will be (8)+(2*8) GB , or 24GB. The
# default page file sizing of Windows will allow for this without having
# to reconfigure the system. Larger heap sizes are possible, but the maximum
# page file size will have to be increased accordingly.
#
# The Redis heap must be larger than the value specified by the maxmemory
# flag, as the heap allocator has its own memory requirements and
# fragmentation of the heap is inevitable. If only the maxmemory flag is
# specified, maxheap will be set at 1.5*maxmemory. If the maxheap flag is
# specified along with maxmemory, the maxheap flag will be automatically
# increased if it is smaller than 1.5*maxmemory.
#
# maxheap <bytes> # The heap memory mapped file must reside on a local path for heap sharing
# between processes to work. A UNC path will not suffice here. For maximum
# performance this should be located on the fastest local drive available.
# This value defaults to the local application data folder(e.g.,
# "%USERPROFILE%\AppData\Local"). Since this file can be very large, you
# may wish to place this on a drive other than the one the operating system
# is installed on.
#
# Note that you must specify a directory here, not a file name.
# heapdir <directory path(absolute or relative)>
heapdir ./

启动redis服务器:run.bat

redis-server.exe  redis.windows.conf

Redis是可以安装成windows服务的,开机自启动

redis-server --service-install redis.windows.conf

但是安装好之后,Redis并没有启动,启动命令如下:

redis-server --service-start
停止命令:

redis-server --service-stop
还可以安装多个实例

redis-server --service-install –service-name redisService1 –port 10001
redis-server --service-start –service-name redisService1
redis-server --service-install –service-name redisService2 –port 10002
redis-server --service-start –service-name redisService2
redis-server --service-install –service-name redisService3 –port 10003
redis-server --service-start –service-name redisService3
卸载命令:

redis-server --service-uninstall
最后提示一下:2.8版本的不支持32位系统,32位系统要去下载2.6版本的。2.6版本的无法像上面一样方便的部署,它提供一个叫RedisWatcher的程序来运行redis server,Redis停止后会自动重启。

另外推荐一个Redis可视化管理工具:Redis Desktop Manager,官网的下载地址被墙了,可以在我的网盘下载 v0.7.6版

http://keenwon.com/1275.html