@Test
public void test1(){
Jedis jedis = new Jedis("localhost", 6379);
System.out.println(jedis.ping());
Set<String> keys = jedis.keys("*");//keys *
for(String key:keys){
System.out.println(key+":"+jedis.type(key));
}
jedis.close();
}
@Test
public void test2(){
Jedis jedis = new Jedis("localhost", 6379);
//取string
String value1 = jedis.get("name");//get name
System.out.println("name="+value1);
//取hash
String value2 = jedis.hget("dept10", "dname");//hget dept10 dname
System.out.println("dname="+value2);
//获取hash所有字段值
Set<String> fields = jedis.hkeys("dept20");
for(String f:fields){
System.out.println(f+":"+jedis.hget("dept20", f));
}
jedis.close();
}
@Test
public void test3(){
Map<String, String> data = new HashMap<>();
data.put("no", "101");
data.put("name", "tom");
Jedis jedis = new Jedis("localhost", 6379);
jedis.hmset("mymap1", data);//存入map
Map<String,String> map = jedis.hgetAll("mymap1");//获取map
System.out.println(map.get("no")+" "+map.get("name"));
jedis.close();
}
@Test
public void test4(){
Dept dept = new Dept();
dept.setDeptno(10);
dept.setDname("Java");
dept.setLoc("北京");
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("dept".getBytes(), SerializableUtil.objectToBytes(dept));
jedis.close();
}
@Test
public void test5(){
Jedis jedis = new Jedis("localhost", 6379);
byte[] bytes = jedis.get("dept".getBytes());
Dept dept = (Dept)SerializableUtil.bytesToObject(bytes);
System.out.println(dept.getDeptno()+" "+dept.getDname()+" "+dept.getLoc());
jedis.close();
}
SerializableUtil.java
public class SerializableUtil {
public static Object bytesToObject(byte[] bytes){
ByteArrayInputStream input = null;
ObjectInputStream ois = null;
try{
input = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(input);
Object obj = ois.readObject();//反序列化将字节数组转成Object
return obj;
}catch(Exception ex){
ex.printStackTrace();
return null;
}finally{
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static byte[] objectToBytes(Object obj){
ByteArrayOutputStream out = null;
ObjectOutputStream oos = null;
try{
out = new ByteArrayOutputStream();
oos = new ObjectOutputStream(out);
oos.writeObject(obj);//将obj序列化后写入out对象中
byte[] bytes = out.toByteArray();
return bytes;
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
引入spring-data-redis包、jedis、connection-pool包
在Spring配置文件定义RedisTemplate、JedisConnectionFactory组件
<bean id="redisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="localhost">
</property>
<property name="port" value="6379"></property>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="redisConnectionFactory">
</property>
</bean>
注入RedisTemplate测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class TestRedisTemplate {
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
@Test
public void test1(){
redisTemplate.opsForValue().set("name", "XDL");
String value = (String)redisTemplate.opsForValue().get("name");
System.out.println(value);
}
@Test
public void test2(){
Dept dept = new Dept();
dept.setDeptno(20);
dept.setDname("XDL");
dept.setLoc("北京");
redisTemplate.opsForValue().set("dept", dept);
Dept d = (Dept)redisTemplate.opsForValue().get("dept");
System.out.println(d.getDeptno()+" "+d.getDname()+" "+d.getLoc());
}
}
@Resource
private RedisTemplate<Object, Object> redisTemplate;
@RequestMapping(value="/dept/get",method=RequestMethod.GET)
public Dept loadDept(@RequestParam("no")int id){
//查找Redis缓存,有返回
Dept dept = (Dept)redisTemplate.opsForValue().get("dept:"+id);
//Redis没有,调用deptDao查询数据库,并将结果放入缓存
if(dept == null){
System.out.println("从数据库查询加载数据");
dept = deptDao.findById(id);
redisTemplate.opsForValue().set("dept:"+id, dept);
}else{
System.out.println("从Redis缓存查询加载数据");
}
return dept;
}
原文:https://www.cnblogs.com/xiaoka000/p/10532718.html