linux下安装redis+redis主从配置+redis基本命令

来源:互联网 发布:平行宇宙 知乎 编辑:程序博客网 时间:2024/03/29 22:16

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

里面的具体代码如下:

  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

 44

 45

 46

 47

 48

 49

 50

 51

 52

 53

 54

 55

 56

 57

#! /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

 来自CODE的代码片

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):将keyoldname重命名为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):给数据库中名称为keystring赋予值value

get(key):返回数据库中名称为keystringvalue

getset(key, value):给名称为keystring赋予上一次的value

mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1key2…)的value

setnx(key, value):如果不存在名称为keystring,则向库中添加string,名称为key,值为value

setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key istring赋值value i

msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key istring都不存在,则向库中添加string

名称key i赋值为value i

incr(key):名称为keystring1操作

incrby(key, integer):名称为keystring增加integer

decr(key):名称为keystring1操作

decrby(key, integer):名称为keystring减少integer

append(key, value):名称为keystring的值附加value

substr(key, start, end):返回名称为keystringvalue的子串

4、对List操作的命令

 

rpush(key, value):在名称为keylist尾添加一个值为value的元素

lpush(key, value):在名称为keylist头添加一个值为value的 元素

llen(key):返回名称为keylist的长度

lrange(key, start, end):返回名称为keyliststartend之间的元素(下标从0开始,下同)

ltrim(key, start, end):截取名称为keylist,保留startend之间的元素

lindex(key, index):返回名称为keylistindex位置的元素

lset(key, index, value):给名称为keylistindex位置的元素赋值为value

lrem(key, count, value):删除count个名称为keylist中值为value的元素。

count0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。 

lpop(key):返回并删除名称为keylist中的首元素rpop(key):返回并删除名称为keylist中的尾元素 

blpop(key1, key2,… key N, timeout)lpop命令的block版本。

即当timeout0时,若遇到名称为key ilist不存在或该list为空,则命令结束。

如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作。

brpop(key1, key2,… key N, timeout)rpopblock版本。参考上一命令。

rpoplpush(srckey, dstkey):返回并删除名称为srckeylist的尾元素,并将该元素添加到名称为dstkeylist的头部

5、对Set操作的命令

 

sadd(key, member):向名称为keyset中添加元素member

srem(key, member) :删除名称为keyset中的元素member

spop(key) :随机返回并删除名称为keyset中一个元素

smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

scard(key) :返回名称为keyset的基数

sismember(key, member) 测试member是否是名称为keyset的元素

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) :返回名称为keyset的所有元素

srandmember(key) :随机返回名称为keyset的一个元素

6、对zsetsorted set)操作的命令

 

zadd(key, score, member):向名称为keyzset中添加元素memberscore用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

zrem(key, member) :删除名称为keyzset中的元素member

zincrby(key, increment, member) :如果在名称为keyzset中已经存在元素member,则该元素的score增加increment

否则向集合中添加该元素,其score的值为increment

zrank(key, member) :返回名称为keyzset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),

若没有member元素,返回“nil”

zrevrank(key, member) :返回名称为keyzset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),

若没有member元素,返回“nil”

zrange(key, start, end):返回名称为keyzset(元素已按score从小到大排序)中的indexstartend的所有元素

zrevrange(key, start, end):返回名称为keyzset(元素已按score从大到小排序)中的indexstartend的所有元素

zrangebyscore(key, min, max):返回名称为keyzsetscore >= minscore <= max的所有元素 

zcard(key):返回名称为keyzset的基数zscore(key, element):返回名称为keyzset中元素element

score zremrangebyrank(key, min, max):删除名称为keyzsetrank >= minrank <= max的所有元素 

zremrangebyscore(key, min, max) :删除名称为keyzsetscore >= minscore <= max的所有元素

zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对Nzset求并集和交集,

并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。

如果没有提供WEIGHT,默认为1。默认的AGGREGATESUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MINMAX是指,

结果集合中元素的score是所有集合对应元素中最小值和最大值。

7、对Hash操作的命令

 

hset(key, field, value):向名称为keyhash中添加元素field<—>value

hget(key, field):返回名称为keyhashfield对应的value

hmget(key, field1, …,field N):返回名称为keyhashfield i对应的value

hmset(key, field1, value1,…,field N, value N):向名称为keyhash中添加元素field i<—>value i

hincrby(key, field, integer):将名称为keyhashfieldvalue增加integer

hexists(key, field):名称为keyhash中是否存在键为field的域

hdel(key, field):删除名称为keyhash中键为field的域

hlen(key):返回名称为keyhash中元素个数

hkeys(key):返回名称为keyhash中所有键

hvals(key):返回名称为keyhash中所有键对应的value

hgetall(key):返回名称为keyhash中所有的键(field)及其对应的value

8、持久化

 

save:将数据同步保存到磁盘

bgsave:将数据异步保存到磁盘

lastsave:返回上次成功将数据保存到磁盘的Unix时戳

shundown:将数据同步保存到磁盘,然后关闭服务

9、远程服务控制

 

info:提供服务器的信息和统计

monitor:实时转储收到的请求

slaveof:改变复制策略设置

config:在运行时配置Redis服务器

redis主从复制配置

1、修改slaveredis.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

原创粉丝点击