一,Java客户端-Jedis
Jedis是Java语言开发的Redis客户端工具包;
Jedis只是对Redis命令的封装;
1. Redis服务的前期准备工作
① 设置Redis可以远程访问
在实际开发中,如果涉及到多台电脑之间互相通信的话,在Redis的底层它要进行一些修改,因为在默认情况下,Redis出于安全的考虑只允许在本地进行访问。
如果远程要进行访问的话,要修改两个参数:
vim redis.conf 设置如下两个属性值: protected-mode no (默认为yes) bind 0.0.0.0 (默认为127.0.0.1)
即
protected-mode 配置项的作用是:是否开启保护模式,开启保护模式后只允许指定的IP地址访问Redis服务
所以,此处我们设置portected-mode配置项值为no,即关闭保护模式,允许其他IP的主机连接进来;
设置bind为0.0.0.0表示所有IP的主机都可以访问进来;
注意:
在开发的时候,是可以设置bind为0.0.0.0; 但是在线上的环境下,为了服务器的安全,必须在此处指明远程服务器的地址!!!
② 设置防火墙,让防火墙对端口6379产生的所有数据进行通行
使用防火墙命令进行设置
firewall-cmd —zone=public —add-port=6379/tcp —permanent
其中
—zone=public是设置公用区域的防火墙;
—add-port=6379/tcp是增加可通行的端口6379(tcp协议上的端口);
—permanent 是设置其永久生效
设置成功后,重新加载防火墙
firewall-cmd —reload
③ 查看Redis服务器的IP地址
ifconfig
2. 获取Jedis的Maven依赖
访问Redis的官网
选择菜单“clients”中的“Java”
选择使用Jedis
发现不仅仅只有Jedis,但是Jedis在国内使用最广的
在GitHub中获取Jedis的Maven依赖
查看Jedis发布的版本:
3. 在Java中使用Jedis
第一步:在pom.xml中添加第二步中查找的依赖
第二步:在Java代码中使用Jedis
Jedis jedis = new Jedis(“192.168.156.23”, 6379);
链接远程Redis服务的Redis数据库,第一个参数为远程服务器IP地址,第二个参数为Redis设置的端口号;
如果Redis有配置访问密码的话,则需要输入密码;
jedis.auth(“12345”);
jedis.select(2);
选择2号数据库;
选择好数据库后,则可以对数据库数据进行操作
操作结束后,则需要关闭redis链接
jedis.close( );
注意:
一般用try…catch…finally语句,将close放在finally中,保证其一定被运行
① 对字符串进行操作
jedis.set(“name”,”xiaohui”); //向Redis数据库中添加一条数据 String name = jedis.get(“name”); //获取key=name的值value jedis.mset(new String[]{“age”,”18”,”brithday”,”1895-08-25”}); //一次向数据库中添加多条数据(键值对) List
result = jedis.mget(new String[]{“age”,”brithday”,”name”}); //一次获取多个key的值value Long age = jedis.incr(“age”); //获取key=age的值自增1后的值
② 对hash类型进行操作
jedis.hset(“student:1001”,”name”,”张晓辉”); //向数据库中添加一个hash类型的数据(一个键对应多个键值对) String name = jedis.hget(“student:1001”,”name”); //获取key中对应的key的value Map
studentMap = new HashMap( );
studentMap.put(“name”,”晓辉”); studentMap.put(“age”,”18”); studentMap.put(“id”,”1002”); jedis.hmset(“student:1002”,studentMap); //一次向一个key添加多个键值对 Mapsmap = jedis.hgetAll(“student:1002”);
注意:
在redis中,它对于中文或者其他特殊符号采用Unicode进行存储,底层默认使用的是UTF-8来表达的,在UTF-8中一个中文由三个字节来表达
③ 对list类型进行操作
jedis.rpush(“letter”,new String[]{“a”,”b”,”c”}); //向list末端添加数据(追加) jedis.lpush(“letter”,new String[]{“c”,”d”,”e”}); //向list左侧添加数据(追加) List
letter = jedis.lrange(“letter”,0,-1); //获取所有list的元素 jedis.lpop(“letter”); //从左侧弹出一个元素 jedis.rpop(“letter”); //从右侧弹出一个元素 弹出后,需要重新获取一下letter letter = jedis.lrange(“letter”,0,-1);