linux安装redis
redis安装步骤如下:
linux命令下载:
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
wget –p /java/redis “chainUrl”;指定下载目录
1、下载redis安装包。下载地址为https://redis.io/download
下载下来的文件为redis-3.2.9.tar.gz
2、通过WinSCP工具把安装包上传到linux系统上面
创建一个redis的目录存放安装包和编译之后的文件
mkdir redis
3、解压安装包
tar -zxvf redis-3.2.9.tar.gz
4、编译安装
进入redis解压之后的目录redis-3.2.9
cd redis-3.2.9
然后执行make命令进行编译
make
编译完成之后使用ls或者ll命令查看当前文件目录下的文件目录和文件夹
1. 如果输入make提示 : make: cc:命令未找到
原因:
未安装gcc
解决方法:
安装gcc
[ckl@localhost ~]$ yum -y install gcc automake autoconf libtool make
ls
可以看见多了一个src的目录。
[root@localhost redis-3.2.9]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest
runtest-sentinel src utils
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster
sentinel.conf tests
5、把启动需要的文件移动到一个相对层次比较低的目录,目的是为了写启动脚本
的时候比较方便
首先在redis目录下新建一个conf目录,然后把启动需要的文件启动到conf目录下。
mkdir /home/user/redis/conf
cd src
cp redis-server /home/user/redis/conf
cp redis-cli /home/user/redis/conf
cp redis-benchmark /home/user/redis/conf
cp ../redis.conf /home/user/redis/conf
6、启动停止redis
cd/home/user/Redis/conf
启动 ./redis-server filePath(redis.conf)
后台启动: ./redis-server &
停止 ./redis-cli -p 6379 shutdown
使用./redis-cli 连接redis进行测试redis是否启动成功
[vigoss@localhost local]$ ./redis-cli
127.0.0.1:6379> set name testname
OK
127.0.0.1:6379> get name
"testname"
测试成功
1.直接启动
进入redis根目录,执行命令:
#加上‘&’号使redis以后台程序方式运行
1 | ./redis-server & |
2.通过指定配置文件启动
可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf
进入redis根目录,输入命令:
1 | ./redis-server /etc/redis/6379.conf |
#如果更改了端口,使用`redis-cli`客户端连接时,也需要指定端口,例如:
1 | redis-cli -p 6380 |
7、修改redis.conf配置文件,使得可以远程访问不受限制。如果需要限制可以访问redis的权限,可以使用bind指定ip
修改/home/user/redis/conf目录下的redis.conf文件
viredis.conf
找到‘daemonize no’改为‘daemonize yes‘
找到# bind 127.0.0.1 ::1并注释掉
然后退出保存
8、配置redis为开机启动,需要写一个redis的启动停止脚本。
cd/etc/init.d/
vi redis
里面的具体代码如下:
#! /bin/bash # chkconfig: 345 10 90 # description: Start and Stop redis
PATH=/usr/local/bin:/sbin:/usr/bin:/bin # redis端口号 REDISPORT=6379 # redis-server所在目录的绝对路径 EXEC=/home/java/redis/conf/redis-server # redis-cli所在目录的绝对路径 REDIS_CLI=/home/java/redis/conf/redis-cli #指定redis启动之后pid文件存放路径,默认是这个路径 PIDFILE=/home/java/redis/conf/redis_6379.pid # redis.conf所在目录的绝对路径 CONF="/home/java/redis/conf/redis.conf" #AUTH="password"
case "$1" in start) if [ -f $PIDFILE ] then echo "Process is already running or crashed." else echo "Starting Redis server..." $EXEC $CONF & #$EXEC $CONF 后边加一个&,表示让redis作为后台服务启动,否则该服务会独占输入屏。 fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "Process is not running." echo "nothing todo." 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 |
snippet_file_0.txt
先按下ESC退出编辑模式,然后输入:wq 保存并退出,:wq!
其中脚本最开始的这个必须要加,不然没法加入开机启动,而且chkconfig一定要设置为345,
如果设置为2345会出现服务redis不支持chkconfig现象。
#! /bin/bash
# chkconfig: 345 10 90
然后设置权限
chmod 755 redis
chmod 755 设置用户的权限为:
1.文件所有者可读可写可执行 --7
2.与文件所有者同属一个用户组的其他用户可读可执行 --5
3.其它用户组可读可执行 --5
加入开机启动
chkconfig redis on
重启 reboot now
ps -ef | grep redis
[vigoss@localhost ~]$ ps -ef | grep redis
root 748 1 0 19:15 ? 00:00:00 /usr/redis/redis-server *:6379
vigoss 2698 2007 0 19:16 pts/0 00:00:00 grep --color=auto redis
如果出现上面信息,说明redis开机启动设置成功。
以后启动停止,重启也可以使用如下命令,比较方便。
/etc/init.d/redis start
/etc/init.d/redis restart
/etc/init.d/redis stop
Redis服务器设置密码后,使用service redis stop 会出现以下信息:
service redis stop
Stopping ...
OK
(error) NOAUTH Authentication required.
Waiting for Redis to shutdown ...
可以使用ps -ef | grep redis 查进程号 然后kill 掉,如果在deamon下还需要去删除pid文件,有点繁琐。
解决办法:
用redis-cli 密码登陆(redis-cli -a password)就OK了。
再用ps -ef | grep redis 可以看到redis进程已经正常退出。
修改redis服务脚本,加入如下所示的红色授权信息即可:
vi /etc/init.d/redis
$CLIEXEC -a "password" -p $REDISPORT shutdown(文件第37行)
redis安装就到这里
查看主从信息
auth “password”
info replication
[Redis] redis-cli 命令总结
1、连接操作相关的命令
quit:关闭连接(connection)
auth:简单密码认证
2、对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个key
rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key
3、对String操作的命令
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value
setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value
setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time
mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i
msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,
名称key i赋值为value i
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串
4、对List操作的命令
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)
ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值为value
lrem(key, count, value):删除count个名称为key的list中值为value的元素。
count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。
lpop(key):返回并删除名称为key的list中的首元素 rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。
如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作。
brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
5、对Set操作的命令
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合
scard(key) :返回名称为key的set的基数
sismember(key, member) :测试member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合
sunion(key1, key2,…key N) :求并集
sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合
sdiff(key1, key2,…key N) :求差集
sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素
6、对zset(sorted set)操作的命令
zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
zrem(key, member) :删除名称为key的zset中的元素member
zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;
否则向集合中添加该元素,其score的值为increment
zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),
若没有member元素,返回“nil”
zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),
若没有member元素,返回“nil”
zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素
zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素
zcard(key):返回名称为key的zset的基数 zscore(key, element):返回名称为key的zset中元素element的
score zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素
zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,
并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。
如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,
结果集合中元素的score是所有集合对应元素中最小值和最大值。
7、对Hash操作的命令
hset(key, field, value):向名称为key的hash中添加元素field<—>value
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value
hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
8、持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务
9、远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器
redis主从复制配置
1、修改slave的redis.conf配置文件:
slaveof 192.168.0.100 6379 (映射到主服务器上)
masterauth 123456 #主服务器配置的密码
重启主服务、从服务器
# service redis stop
# service redis start
然后执行./redis-cli进入redis客户端执行info命令
查看主从信息
auth “password”
info replication
2测试:
主服务:
Set key value
Get key
从服务:
Get key