Linux下安装Redis数据库,将Oracle表数据导入redis,并编写java测试程序连接redis

    xiaoxiao2023-10-23  164

    安装及简单验证修改防火墙配置文件,配置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. 参考链接

    Redis 命令参考

    Redis 教程

    最后,谢谢各位读者的耐心阅读,如有语句不通顺或者不准确的地方,大家也可以提提改善的意见!(^__^)

    最新回复(0)