- 安装及简单验证
- 修改防火墙配置文件,配置redis端口6379白名单
- 给redis设置口令,增加安全访问机制
- Redis 2.6的大数据插入
- 编写redis的java测试程序
- 常用命令
- 参考链接
安装包下载路径:https://redis.io/download
1. 安装及简单验证
1.1 解压安装包
tar zxvf redis-5.0.4.tar.gz
1.2 进入redis目录,执行make命令进行编译
cd redis-5.0.4
make
1.3 编译成功后,执行如下命令启动server端
./src/redis-server
1.4 克隆一个会话,执行如下命令启动client端
src/redis-cli
1.5 通过set命令设置一个key=foo,对应的value="bar",并通过get命令获取
set foo bar
get foo
2. 修改防火墙配置文件,配置redis端口6379白名单
sudo vi /etc/sysconfig/iptables
文件内容添加如下代码
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
sudo service iptables restart
sudo service iptables save
sudo iptables -L -n
3. 给redis设置口令,增加安全访问机制
3.1 打开redis.conf配置文件,找到requirepass,然后修改口令为123456,将 bind 的IP改为0.0.0.0(此项配置是允许其他服务器访问到redis数据库)
vi redis.conf
修改内容如下:
requirepass 123456
bind 0.0.0.0
3.2 带配置文件方式启动服务
./src/redis-server redis.conf
3.3 使用口令登录客户端
./src/redis-cli -a 123456
或者
./src/redis-cli
127.0.0.1:6379> auth 123456
3.4 停止服务
./src/redis-cli -a 123456 shutdown
4. Redis 2.6的大数据插入
4.1 新的统一请求协议的通用格式如下:
"*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"
*3表示有3个参数;
$3表示第一个参数长度为3
SET
$5表示第二个参数长度为5
mykey
$7表示第三个参数长度为7
myvalue
综上,可以看出,单独写入一条数据工作量还是不怎么多,但是如果是一张表的数据,工作量就很多,而且重复。
所以从Redis 2.6开始redis-cli支持一种新的被称之为pipe mode的新模式可用于执行大量数据插入工作。
4.2 示例:将Oracle数据库Scott用户下emp表的empno, ename, job三个字段的所有信息迁移存放至 Redis 。
4.2.1 Oracle数据准备:将下面sql执行结果保存至scott_emp.txt中。
SELECT
'*4\r\n' ||
'$' || LENGTH(redis_cmd) || '\r\n' ||
redis_cmd || '\r\n'||
'$' || LENGTH(redis_key) || '\r\n' ||
redis_key || '\r\n' ||
'$' || LENGTH(hkey) || '\r\n' ||
hkey || '\r\n'||
'$' || LENGTH(hval) || '\r\n' ||
hval || '\r\n'
FROM (
SELECT
'HSET' as redis_cmd,
'emp' AS redis_key,
empno AS hkey,
empno || ':' || ename || ':'||job AS hval
FROM emp
);
4.2.2 迁移数据至Redis,执行如下命令将scott_emp.txt中的数据导入redis数据库中:
echo -e "$(cat scott_emp.txt)" | redis-5.0.4/src/redis-cli --pipe
4.2.3 登录客户端后,通过如下命令获取所有信息
hgetall emp
5. 编写redis的java测试程序
使用jar包:jedis-2.9.0.jar
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("192.168.246.130", 6379);
jedis.auth("123456");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());
System.out.println("redis 存储的字符串为: "+ jedis.get("foo"));
System.out.println("redis 存储的字符串为: "+ jedis.hget("emp", "7369"));
}
6. 常用命令
ping = 检测服务端状态,有链接返回字符串"PONG",反之报错。
keys * = 查看所有key。
del emp = 删除key = emp的数据。
hgetall emp = 返回哈希表 key = emp 中所有的域和值。
type emp = 查看key = emp 的类型(String, List, Hash, Set, zSet)
hget emp 7369 = 查看key = emp 中标志位7369的信息。
redis-server -v = 查看redis版本
netstat -tnl = 查看端口(Linux命令)
7. 参考链接
最后,谢谢各位读者的耐心阅读,如有语句不通顺或者不准确的地方,大家也可以提提改善的意见!(^__^)