Jedis Client是Redis官網推薦的一個面向java客戶端,庫文件實現了對redis各種API進行封裝調用,經過這些API咱們會很是方便的操做咱們的Redis數據庫。java
在redis.conf的配置文件中bind配置的信息表示的是redis服務能夠接收外部訪問的地址,這個主要仍是爲了提升安全性,咱們在學習階段能夠將這個信息直接註釋掉,這樣的話任意的外部ip地址均可以訪問。bind是protected-mode配合使用的redis
bind 127.0.0.1
redis3.2版本後新增protected-mode配置,默認是yes,即開啓。設置外部網絡鏈接redis服務,設置方式以下: 一、關閉protected-mode模式,此時外部網絡能夠直接訪問 二、開啓protected-mode保護模式,需配置bind ip或者設置訪問密碼spring
添加依賴數據庫
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency>
案例代碼:安全
/** * 測試是否鏈接成功 */ public void ping(){ Jedis jedis = new Jedis("192.168.119.12", 6379); System.out.println(jedis.ping()); } /** * 設置key/value對 */ public void set(){ Jedis jedis = new Jedis("192.168.119.12", 6379); jedis.set("name", "張三"); jedis.set("age", "18"); jedis.close(); } /** * 經過key獲取對應的value */ public void get(){ Jedis jedis = new Jedis("192.168.119.12", 6379); String name = jedis.get("name"); String age = jedis.get("age"); System.out.println(name+"--"+age); jedis.close(); } /** * 經過Jedis的鏈接池Pool */ public void testJedisPool() { // 建立Jedis鏈接池 JedisPool pool = new JedisPool("192.168.119.12", 6379); // 從鏈接池中獲取Jedis對象 Jedis jedisItem = pool.getResource(); String name = jedisItem.get("name"); System.out.println(name); jedisItem.close(); pool.close(); } /** * 操做incr方法自增1 */ public void incr(){ Jedis jedis = new Jedis("192.168.119.12", 6379); Long age = jedis.incr("age"); System.out.println(age); }
redis數據 控制檯輸出
網絡
添加依賴app
<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.3.RELEASE</version> </dependency> </dependencies>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <context:component-scan base-package="com.sxt.dao.impl"></context:component-scan> <!-- 鏈接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大鏈接數 --> <property name="maxTotal" value="30" /> <!-- 最大空閒鏈接數 --> <property name="maxIdle" value="10" /> <!-- 每次釋放鏈接的最大數目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 釋放鏈接的掃描間隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 鏈接最小空閒時間 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 鏈接空閒多久後釋放, 當空閒時間>該值 且 空閒鏈接>最大空閒鏈接數 時直接釋放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 獲取鏈接時的最大等待毫秒數,小於零:阻塞不肯定的時間,默認-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在獲取鏈接的時候檢查有效性, 默認false --> <property name="testOnBorrow" value="false" /> <!-- 在空閒時檢查有效性, 默認false --> <property name="testWhileIdle" value="false" /> <!-- 鏈接耗盡時是否阻塞, false報異常,ture阻塞直到超時, 默認true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- jedis客戶端單機版 --> <bean id="redisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.119.12"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> </beans>
package com.sxt.bean; public class User { private Integer id; private String username; private String password; @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.sxt.dao; import java.util.List; import com.sxt.bean.User; public interface UserDao { //查詢方法 public List<User> query(User user); //添加方法 public int add(User user); //刪除方法· public int delete(Integer id); //更新數據 public int update(Integer id); }
package com.sxt.dao.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.sxt.bean.User; import com.sxt.dao.UserDao; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Service public class UserDaoImpl implements UserDao{ @Resource private JedisPool jedis1; private Jedis jedis; @Override public List<User> query(User user) { jedis = jedis1.getResource();//從鏈接池獲取jedis對象 Set<String> set = jedis.keys("user:*"); List<User> list= new ArrayList<>(); for (String key : set) { User user2 = new User(); String hget = jedis.hget(key, "id"); String hget2 = jedis.hget(key,"username"); String hget3 = jedis.hget(key,"password"); user2.setId(Integer.parseInt(hget)); user2.setUsername(hget2); user2.setPassword(hget3); list.add(user2); } return list; } @Override public int add(User user) { jedis = jedis1.getResource(); jedis.hset("user:"+user.getId(), "username", user.getUsername()); jedis.hset("user:"+user.getId(), "id",user.getId()+""); jedis.hset("user:"+user.getId(), "password", user.getPassword()); return 0; } @Override public int delete(Integer id) { jedis = jedis1.getResource(); jedis.del("user:"+id); return 0; } @Override public int update(Integer id) { jedis = jedis1.getResource(); Map<String,String> map = new HashMap<>(); map.put("username", "zhangsan"); map.put("id", 1+""); map.put("password", "321"); jedis.hmset("user:"+id, map); return 0; } }
package com.sxt; import java.util.List; import org.junit.Before; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sxt.bean.User; import com.sxt.dao.UserDao; public class Test { private UserDao dao; @org.junit.Test @Before public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml"); dao = ac.getBean(UserDao.class); } //查詢 @org.junit.Test public void test1(){ User user = new User(); List<User> list = dao.query(user); System.out.println(list); } //添加 @org.junit.Test public void test2(){ User user = new User(); user.setId(2); user.setUsername("lisi"); user.setPassword("321"); dao.add(user); } //刪除 @org.junit.Test public void test3(){ dao.delete(2); } //更新 @org.junit.Test public void test4(){ dao.update(1); } }
這樣redis和spring整合實現ide