前言
之前的博客中,redis已经安装成功了,单纯的在命令行输入命令来操作数据库是远远不能满足我们的需求的,我们需要使用java代码来操作redis,于是我们引入了jedis。
添加jar包
<!-- Redis客户端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
单机版
每次使用都创建一个jedis连接
public void jedis() throws Exception{ //创建一个连接jedis对象,参数:host;port Jedis jedis = new Jedis("单机版redis的ip地址", 端口号); //直接使用jedis操作redis,所有jedis命令都对应一个方法 jedis.set("test", "sds"); String string = jedis.get("test"); System.out.println(string); //关闭连接 jedis.close(); }
使用连接池
public void jedisPool() throws Exception{ //创建一个连接池,两个参数:host和port JedisPool jedisPool = new JedisPool("单机版redis的ip地址", 端口号); //从连接池获得一个连接,就是一个jedis对象 Jedis jedis = jedisPool.getResource(); //使用jedis操作redis jedis.get("test"); //关闭连接,每次使用完毕后关闭连接,连接池回收资源 jedis.close(); jedisPool.close(); }
集群
public void jedisCluster() throws Exception{ //创建一个JedisCluster对象,有一个参数nodes,是一个set类型,set中包含若干个HostAndPort对象 Set<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("集群中redis01的ip地址", 端口号)); nodes.add(new HostAndPort("集群中redis02的ip地址", 端口号)); nodes.add(new HostAndPort("集群中redis03的ip地址", 端口号)); nodes.add(new HostAndPort("集群中redis04的ip地址", 端口号)); nodes.add(new HostAndPort("集群中redis05的ip地址", 端口号)); nodes.add(new HostAndPort("集群中redis06的ip地址", 端口号)); JedisCluster jedisCluster = new JedisCluster(nodes); //使用JedisCluster对象操作redis jedisCluster.set("test", "123"); String string = jedisCluster.get("test"); System.out.println(string); //系统关闭之前关闭JedisCluster对象 jedisCluster.close(); }
总结
在实际开发中,我们开发用单机版就好,但是如果上到生产,连接单机和集群的方法不一样,这时候需要接口了,同一方法不同实现类。然后在spring中加载两个类就好。
单机版配置文件:
<!-- 连接单机版redis --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="单机版redis的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean id="jedisClientPool" class="单机版redis实现类的全路径"> <property name="jedisPool" ref="jedisPool"></property> </bean>
集群版配置文件:
<!-- 连接集群版redis --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis01的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis02的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis03的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis04的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis05的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="集群中redis06的ip地址"/> <constructor-arg name="port" value="端口号"/> </bean> </set> </constructor-arg> </bean> <bean id="jedisClientCluster" class="集群版redis实现类的全路径"> <property name="jedisCluster" ref="jedisCluster"></property> </bean>完工。