reids学习中遇到的一些问题(远程主机无法访问)

注意:
以下关于执行命令的当前执行目录为redis-4.0.1的安装根目录下。
如果相关依赖没有安装,需要补充安装。
例如:
yum install gcc-c++
yum install -y tcl
yum install wget


下载、解压、编译
$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz
$ tar xzf redis-4.0.1.tar.gz
$ cd redis-4.0.1
$ make

redis有两种启动方式,直接运行./src/redis-server以前端模式启动,该方法需要一直保持ssh连接
一旦关闭则redis服务结束,不推荐使用。
推荐将启动redis作为后台精灵进程执行,
修改redis-4.0.1目录下的redis.conf中daemonize为yes,
并以以下的命令来启用。
启用redis
./src/redis-server redis.conf


关闭redis
./src/redis-cli shutdown


查询redis进程
ps -ef | grep -i redis


启用redis客户端
./src/redis-cli


基本用法:

String数据类型:

设置变量
set key name

获取变量

get key

获取变量后再设置

getset key

删除变量

del key

变量列表

keys *

自增运算

incr key

自减运算

decr key

指定自增(自减)大小运算

incrby key [自增大小]

(decrby key [自减大小])

拼接操作

append key [拼接内容]


Hash数据类型(其中xxx为自定义map对象名):

设置键值对map对象:

hset xxx key value

获取键值对map对象某个key的值:

hget xxx key

同时设置map对象多个键值对:

hmset xxx key1 value1 key2 value2 ...

同时获取map对象多个key的值:

hmget xxx key1 key2 ...

一次获取所有属性的值:

hgetall xxx

删除map对象多个key:

hdel xxx key1 key2 ...

或者删除整个map对象:

del xxx

key的数值自增自减:

hincrby xxx key [自增数字]

hdecrby xxx key[自减数字]

判断map对象中是否存在某个key:

hexists xxx key

返回map对象key的长度大小:

hlen xxx

返回map对象所有key的名称:

hkeys xxx

返回map对象所有value的值:

hvals xxx


list数据类型(其中xxx为自定义数组名):

从左边插入数值(或者使用lpushx):

lpush xxx value1 value2 ...

从右边插入数值:

rpush xxx value1 value2 ...

查看数组数值情况:

lrange xxx  起始下标 结束下标

(如果起始下标为0,结束下标为-1则表示查看全部)

移除数组顶部数值:

lpop xxx

移除数组尾部数值:

rpop xxx

返回数组长度大小:

llen xxx

删除多个重复值:

lrem xxx 数量 指定值(从顶部往尾部顺序删除)

lrem xxx -数量 指定值(从尾部往顶部顺序删除)

指定下标插入新值:

lset xxx 下标 新值

在指定值之前(之后)前插入新值:

linsert xxx before(after) 指定值 新值

将尾部的值弹出并填充到顶部(可以是其他数组)去:

rpoplpush xxx xxx

(该命令可用于消息通知处理是否成功进行归类)


set数据类型(其中xxx为自定义set对象):

添加set数值:

sadd xxx value1 value2 ...

移除set数值:

srem xxx value1 value2 ...

查看set数值:

smembers xxx

判断set中是否包含指定值:

sismember xxx 指定值

两个set中的差集运算:

sdiff xxx1 xxx2

两个set中的交集运算:

sinter xxx1 xxx2

两个set进行并集:

sunion xxx1 xxx2




遇到的问题:
如果需要远程使用,需要在 /etc/sysconfig/iptables 防火墙配置中打开6379端口(云服务器需要配置安全组规则)
service iptables restart
另外,如果使用telnet xxx.xxx.xxx.xxx 6379 无法ping通远程redis主机
在redis.conf中有个配置 bind 127.0.0.1 , 默认只有本机允许访问,将该行注释
由于redis有默认开启保护模式,需要满足以下条件之一才可以正常远程访问:
已经运行时的解决方法:
启动redis-cli
./src/redis-cli
127.0.0.1:6379>config set protected-mode no


关闭后的解决方法:
1.关闭保护模式
临时关闭保护模式:
开启redis是加入参数“protected-mode no”,如下:
./src/redis-server redis.conf protected-mode no
永久关闭保护模式:
在redis.conf中找到 “protected mode yes” 改成 “protected mode no”
2.配置密码
修改redis.conf文件中以下配置
# requirepass foobared
去掉#注释,并将foobared替换为密码
3.指定ip
修改redis.conf文件中以下配置
bind 127.0.0.1 将127.0.0.1配置为访问ip段,可配置多个,如下:
bing xxx.xxx.xxx.xx1 xxx.xxx.xxx.xx2


补充:
查看端口监听命令
linux
netstat -an | grep 6379
window
netstat -aon | findstr :6379


开机启动配置,在 rc.local文件中配置 (需要写全路径)
echo "/data/redis-4.0.1/src/redis-server /data/redis-4.0.1/redis.conf &" >> /etc/rc.local

猜你喜欢

转载自blog.csdn.net/baidu_36720706/article/details/78518866
今日推荐