安装篇
下载
去官网查看你要的版本下载(本文使用3.2.3)1
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
解压安装
1 | tar xvzf redis-3.2.3.tar.gz |
make执行完后会出现src目录,进入src可以看见有redis-server、redis-cli等命令。
启动与测试
执行redis-server即可看到redis启动页面。
另开一个命令行界面执行redis-cli即可进去测试。-h 参数指定IP -p 参数可指定端口。
设置服务
如果想以服务的方式去启动redis,可以按照以下步骤来。
首先复制redis子目录utils中的redis_init_script到/etc/init.d下,同时易名为redis。
1
cp redis-3.2.3/utils/redis_init_script /etc/rc.d/init.d/redis
修改脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43#!/bin/sh
#
# chkconfig: 2345 80 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
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
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
修改有两处:1、第三行为新增;2、第21行结尾处添加&,后台启动。
将redis子目录src下的redis-server和redis-cli复制到/usr/local/bin/文件(脚本中第8/9行指示)
1
2cp redis-3.2.3/src/redis-server /usr/local/bin/
cp redis-3.2.3/src/redis-cli /usr/local/bin//etc目录下创建redis目录并复制配置到此目录(脚本文中第12行)
1
2mkdir /etc/redis
cp redis-3.2.3/redis.conf /etc/redis/6379.conf注册服务
1
chkconfig --add redis
启动服务
1
service redis start
以服务的方式启动已成功,即可使用,若需要停止,请看下一个步骤。
- 停止服务
1
service redis stop
如需对外开放服务,请修改配置文件中的bind,配置对外服务机器的IP。
集成篇
当前只介绍Spark写数据到redis
导入jar1
2
3
4
5<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14import org.apache.spark.{SparkContext, SparkConf}
import redis.clients.jedis.Jedis
val conf = new SparkConf().setAppName(this.getClass.getSimpleName)
val sc = new SparkContext(conf)
val rdd = ... //要写入redis的数据,RDD[Map[String,String]]
rdd.foreachPartition{iter =>
val redis = new Jedis("10.10.40.111",6379,400000)
val ppl = redis.pipelined()//使用pipeline 更高效的批处理
iter.foreach{f=>
ppl.hmset(f("mid"),f)//当前采用的是Map类型,以mid为Key
}
ppl.sync()
}