Redis使用过程中的报错
1、使用源码包安装Redis2.8.13时出现的报错
问题1:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
原因:
在使用说明文件README中,查找jemalloc发现文件中有如下内容:
Selecting a non-default memory allocator when building Redis is done by setting the
MALLOC
environment variable. Redis is compiled and linked against libc malloc by default, with the exception of jemalloc being the default on Linux systems. This default was picked because jemalloc has proven to have fewer fragmentation problems than libc malloc.
To force compiling against libc malloc, use:
% make MALLOC=libc
To compile against jemalloc on Mac OS X systems, use:
% make MALLOC=jemalloc
大致意思是:在构建Redis时,通过设置“MALLOC”环境变量来选择非默认内存分配器。默认情况下,Redis是针对libc malloc编译和链接的,但是Linux系统上默认使用jemalloc。之所以选择这个默认值,是因为jemalloc已被证明比libc malloc有更少的碎片问题。
要强制编译libc malloc,使用:
% make MALLOC=libc
要在Mac OS X系统上编译jemalloc,使用:
% make MALLOC=jemalloc
解决:
根据以上内容可以知道,只需要设置分配编译器重新编译即可
make MALLOC=libc
# 清除之前make编译的缓存
make clean
# 再执行make命令即可执行成功
2、使用Redis 2.8.13时报错
错误1:(error) WRONGTYPE Operation against a key holding the wrong kind of value
分析:
(错误)WRONGTYPE对持有错误类型值的键的操作,大致可以理解为查看logstash这个类型的值时使用的命令是错误的
# 查看logstash的类型
127.0.0.1:6379> TYPE logstash
list
# 可以看到 logstash 是list类型,而get用来获取tring类型值
# 所以使用获取lst值的命令即可
# lrange key 起始位置 终止位置
127.0.0.1:6379> LRANGE logstash 0 -1```
解决:
使用如下命令查询即可
127.0.0.1:6379> LRANGE logstash 0 -1```