Emp类
[[Emp(name=name0, password=pwd0)]] 格式
//拆分数组
Object[] array = range.toArray();
for(int i = 0; i < array.length; i++) {
//System.out.println(array[i]);
List<Object> arr = (List<Object>) array[i];
for(Object obj : arr) {
System.out.println(obj);
}
}
package com.laoluo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {
private String name;
private String password;
}
redisTest类
package com.pb.redisTest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:applicationContext.xml"})
public class SpringTest {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 保存字符串
*/
@Test
@Ignore
public void test() {
//删除所有的值
Set<String> key = redisTemplate.keys("*");
System.out.println(key);
redisTemplate.delete(key);
redisTemplate.opsForValue().set("name", "张三");
Object object = redisTemplate.opsForValue().get("name");
System.out.println(object);
}
/**
* 保存对象
*/
@Test
@Ignore
public void test1() {
Set<String> key = redisTemplate.keys("*");
System.out.println(key);
//创建两个对象
Emp emp1 = new Emp("张三", "123");
Emp emp2 = new Emp("李四", "abc");
//存入数据
//如果说我们添加的数据是对象的话
//<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>只对String类型有效
redisTemplate.opsForValue().set("emp1", emp1);
redisTemplate.opsForValue().set("emp2", emp2);
//获取数据库
Emp e1 = (Emp)redisTemplate.opsForValue().get("emp1");
Emp e2 = (Emp) redisTemplate.opsForValue().get("emp2");
System.out.println(e1);
System.out.println(e2);
}
/**
* 保存我们的Hash
*/
@Test
@Ignore
public void test2() {
Set<String> key = redisTemplate.keys("*");
System.out.println(key);
//创建两个对象
// redisTemplate.opsForHash().put("map:key", "id", "1");
// redisTemplate.opsForHash().put("map:key", "name", "张三");
// redisTemplate.opsForHash().put("map:key", "sex", "男");
//
// Object obj = redisTemplate.opsForHash().get("map:key", "id");
// Object obj1 = redisTemplate.opsForHash().get("map:key", "name");
// Object obj2 = redisTemplate.opsForHash().get("map:key", "sex");
// System.out.println(obj + "\t" + obj1 + "\t" +obj2);
Map<String, Emp> map = new HashMap<String, Emp>();
map.put("emp", new Emp("张三", "123"));
map.put("emp1", new Emp("李四", "abc"));
map.put("emp2", new Emp("王五", "abc"));
map.put("emp3", new Emp("赵六", "abc"));
map.put("emp4", new Emp("老七", "abc"));
redisTemplate.opsForHash().putAll("map:key", map);
//取数据
// Map<String, Emp> map1 = redisTemplate.opsForHash().entries("map:key");
// Iterator<Entry<String, Emp>> itor = map1.entrySet().iterator();
// while(itor.hasNext()) {
// Entry<String, Emp> next = itor.next();
// System.out.println(next);
// }
List<Object> list = redisTemplate.opsForHash().values("map:key");
for(Object obj:list) {
Emp emp = (Emp) obj;
System.out.println(emp);
}
}
/**
* list集合
*/
@Test
public void test5() {
List<Emp> list = new ArrayList<Emp>();
for(int i = 0;i < 10; i++) {
Emp emp = new Emp("name" + i, "pwd" + i);
list.add(emp);
}
//通过命令放入redis中
//redisTemplate.opsForList().rightPush("emp:list", list);
//遍历数据
//List<Object> list2 = redisTemplate.opsForList().range("emp:list", 0, -1);
//Iterator<Object> itor = list2.iterator();
redisTemplate.opsForList().rightPushAll("emp:list", list);
List<Object> range = redisTemplate.opsForList().range("emp:list", 0, -1);
//System.out.println(range);
//[
//[
//Emp(name=name0, password=pwd0), Emp(name=name1, password=pwd1), Emp(name=name2, password=pwd2),
//Emp(name=name3, password=pwd3), Emp(name=name4, password=pwd4), Emp(name=name5, password=pwd5),
//Emp(name=name6, password=pwd6), Emp(name=name7, password=pwd7), Emp(name=name8, password=pwd8),
//Emp(name=name9, password=pwd9)
//]
//]
//拆分数组
Object[] array = range.toArray();
for(int i = 0; i < array.length; i++) {
//System.out.println(array[i]);
List<Object> arr = (List<Object>) array[i];
for(Object obj : arr) {
System.out.println(obj);
}
}
}
//清空某个库,或清空所有的库
@Test
@Ignore
public void test6() {
redisTemplate.execute(new RedisCallback<Object>() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
connection.flushAll();
return null;
}
});
}
}
POM依赖
<dependencies>
<dependency>
<groupId>com.yugabyte</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0-yb-11</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring redis整合依赖 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>
<!-- spring测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<!-- 将普通的字符串或对象转换为json的依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<!-- 将一个javaBean转换成一个Map集合 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
</dependencies>
映射文件
<!-- 创建我们的连接池 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="100"></property>
<property name="maxIdle" value="90"></property>
<property name="minIdle" value="10"></property>
<property name="testOnBorrow" value="false"></property>
<property name="testOnCreate" value="true"></property>
<property name="blockWhenExhausted" value="true"></property>
<property name="maxWaitMillis" value="2000"></property>
</bean>
<!-- 创建一个工厂 连接redis -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="usePool" value="true"></property>
<property name="hostName" value="192.168.178.128"></property>
<property name="port" value="6379"></property>
<!-- 连接哪一个数据库 -->
<property name="database" value="10"></property>
<!-- 连接那一个连接池 -->
<property name="poolConfig" ref="jedisPoolConfig"></property>
</bean>
<!-- spring专门操作这个redis的对象(jedis) -->
<!-- spring data依赖里有一个 RedisTemplate -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<!-- 通过工厂来构建 -->
<property name="connectionFactory" ref="jedisConnectionFactory"></property>
<!-- 处理字符串key的乱码问题 -->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property>
<!-- 处理字符串Value的乱码问题
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</property> -->
<!-- 处理添加数据是对象的时候的字符串操作 -->
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"></bean>
</property>
<!-- 处理Hash的Key -->
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"></bean>
</property>
<!-- 处理Hash的Value -->
<property name="hashValueSerializer">
<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"></bean>
</property>
</bean>