目录
1.Redis简介
redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
2.Redis安装
Window 下安装,下载地址:https://github.com/MSOpenTech/redis/releases 解压即可。
Linux 下安装,下载地址(官网):http://redis.io/download
安装:
$ wget http://download.redis.io/releases/redis-x.x.x.tar.gz
$ tar xzf redis-x.x.x.tar.gz
$ cd redis-x.x.x
$ make
$ make test
$ make install #默认将命令安装到/usr/local/bin目录,可以使用./configure --prefix=/opt/redis(表示设置软件的安装目录为:/opt/redis)
make完后 redis-x.x.x/src目录下会出现编译后的可执行文件:redis服务程序redis-server,还有用于测试的客户端程序redis-cli,程序位于安装目录 src 目录下:
$ find . -type f -executable
./redis-benchmark # 用于进行redis性能测试的工具
./redis-check-dump # 用于修复出问题的dump.rdb文件
./redis-cli # redis的客户端
./redis-server # redis的服务端
./redis-check-aof # 用于修复出问题的AOF文件
./redis-sentinel # 用于集群管理
==============
扩展:
/usr/local 层级以某种方式复制了根目录,
你可以
在 /usr/local/bin 这里找到可执行程序,
在 /usr/local/lib 中找到库,
在 /usr/local/share 中找到架构无关的文件,
==============
问题1:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
解决方案:
执行命令:make MALLOC=libc
问题2:
You need tcl 8.5 or newer in order to run the Redis test
解决方案:
安装一下tcl:yum install -y tcl
3.Redis启动和停止
(1)默认方式(前端启动)启动redis服务(默认redis服务端口是6379):
$ cd src
$ ./redis-server
(2)指定配置文件启动redis服务(windows下需要指定redis.windows.conf):
$ cd src
$ ./redis-server ../redis.conf
(3)--port 来启动指定端口的redis服务:
redis-server --port 6380 &
redis-server --port 6381 &
redis-server --port 6382 &
(4)后台运行
$ cd redis-5.0.4
$ nohup src/redis-server redis.conf > /home/redis.log 2>&1 &查看运行的redus:ps -ef | grep redis
#!/bin/sh
# chkconfig: 2345 10 90
# description: Start and Stop redis
PATH=/opt/redis/bin #找到本机安装redis后,存放redis命令的目录
REDISPORT=6379 #redis的默认端口, 要和下文中的redis.conf中一致
EXEC=/opt/redis/bin/redis-server #redis服务端的命令
REDIS_CLI=/opt/redis/bin/redis-cli #redis客户端的命令 这两个一般都在 PATH目录下
PIDFILE=/var/run/redis.pid #reids的进程文件生成的位置,要和redis.conf种一致
CONF="//opt/redis/etc/redis-6379.conf" #redis的配置文件所在的目录
#AUTH="1234" 这句没什么用可以不要
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
sleep 2
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
修改文件的权限为 可执行的 chmod 775 /etc/init.d/redis
测试一下redis 的启动
/etc/init.d/redis start
打开redis命令:service redis start
关闭redis命令:service redis stop
设为开机启动:chkconfig redis on
设为开机关闭:chkconfig redis off
(5)Redis5 关闭服务
$ cd redis-5.0.4
$ src/redis-cli shutdown
$ kill -9 id
3.测试_redis客户端的使用
使用测试客户端程序redis-cli和redis服务交互:
本地测试:
$ cd src
$ ./redis-cli # 打开终端,有时候会有中文乱码。要在 redis-cli 后面加上 --raw
127.0.0.1:6379> ping # 通过ping测试连接是否存活
PONG # 表示存活
127.0.0.1:6379> set foo bar # 127.0.0.1 是本机 IP ,6379 是 redis 服务端口,s设置一个key-value
OK
redis> get foo
"bar"
127.0.0.1:6379> select index # index 是数据库索引号,用数字值指定,默认为0到15
127.0.0.1:6379> quit # 退出客户端
127.0.0.1:6379> shutdown # 通过客户端关闭redis,注:shutdown有两个可选的修饰符,nosave会阻止数据库执行保存操作,save会强制让数据库执行保存操作。
127.0.0.1:6379>
远程测试:
$ redis-cli -h 192.168.246.154 -p 6379 -a password # 注:-h:指定Redis服务所在主机IP,-p:指定Redis服务端口,-a:指redis服务密码
4.Redis配置
Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。
修改配置文件方式一:直接修改配置文件。
修改配置文件方式二:使用Config命令配置:
Get获取配置项命令格式:
127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
实例:
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379> CONFIG GET * # 使用 * 号可获取所有配置项
Set编辑配置项命令格式
127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
实例:
127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"