java spring redis_spring redis整合(一)

http://www.springsource.org/download/community?project=Spring%2520Data%2520Redis&version=1.0.1.RELEASE

//spring-redis.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:cache="http://www.springframework.org/schema/cache"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"

xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">

id="jedisPoolConfig"

class="redis.clients.jedis.JedisPoolConfig">

name="maxActive"

value="${redis.pool.maxActive}" />

name="maxIdle"

value="${redis.pool.maxIdle}" />

name="maxWait"

value="${redis.pool.maxWait}" />

name="testOnBorrow"

value="${redis.pool.testOnBorrow}" />

id="jedisConnectionFactory"

class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

name="hostName"

value="${redis.ip}" />

name="port"

value="${redis.port}" />

name="poolConfig"

ref="jedisPoolConfig" />

class="org.springframework.data.redis.core.RedisTemplate"

p:connection-factory-ref="jedisConnectionFactory" />

//User.java

package com.abin.lee.spring.redis.pojo;

import java.io.Serializable;

public class User implements Serializable {

/**

*

*/

private static final long serialVersionUID = 2668307865623183776L;

private String uid;

private String address;

public User() {

super();

}

public User(String uid, String address) {

super();

this.uid = uid;

this.address = address;

}

public String getUid() {

return uid;

}

public void setUid(String uid) {

this.uid = uid;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

@Override

public String toString() {

return "User [uid=" + uid + ", address=" + address + "]";

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((address == null) ? 0 : address.hashCode());

result = prime * result + ((uid == null) ? 0 : uid.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

User other = (User) obj;

if (address == null) {

if (other.address != null)

return false;

} else if (!address.equals(other.address))

return false;

if (uid == null) {

if (other.uid != null)

return false;

} else if (!uid.equals(other.uid))

return false;

return true;

}

}

//UserDao.java

package com.abin.lee.spring.redis.dao;

import com.abin.lee.spring.redis.pojo.User;

public interface UserDao {

/**

* @param uid

* @param address

*/

void save(User user);

/**

* @param uid

* @return

*/

User read(String uid);

/**

* @param uid

*/

void delete(String uid);

}

//UserDaoImpl.java

package com.abin.lee.spring.redis.dao.impl;

import java.io.Serializable;

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.stereotype.Repository;

import com.abin.lee.spring.redis.dao.UserDao;

import com.abin.lee.spring.redis.pojo.User;

@Repository("userDao")

public class UserDaoImpl implements UserDao{

@Autowired

private RedisTemplate redisTemplate;

@Override

public void save(final User user) {

redisTemplate.execute(new RedisCallback() {

@Override

public Object doInRedis(RedisConnection connection)

throws DataAccessException {

connection.set(

redisTemplate.getStringSerializer().serialize(

"user.uid." + user.getUid()),

redisTemplate.getStringSerializer().serialize(

user.getAddress()));

return null;

}

});

}

@Override

public User read(final String uid) {

return redisTemplate.execute(new RedisCallback() {

@Override

public User doInRedis(RedisConnection connection)

throws DataAccessException {

byte[] key = redisTemplate.getStringSerializer().serialize(

"user.uid." + uid);

if (connection.exists(key)) {

byte[] value = connection.get(key);

String address = redisTemplate.getStringSerializer()

.deserialize(value);

User user = new User();

user.setAddress(address);

user.setUid(uid);

return user;

}

return null;

}

});

}

@Override

public void delete(final String uid) {

redisTemplate.execute(new RedisCallback() {

public Object doInRedis(RedisConnection connection) {

connection.del(redisTemplate.getStringSerializer().serialize(

"user.uid." + uid));

return null;

}

});

}

}

//UserDaoTest.java

package com.abin.lee.spring.redis.dao.test;

import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertNull;

import org.junit.Before;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.abin.lee.spring.redis.dao.UserDao;

import com.abin.lee.spring.redis.pojo.User;

public class UserDaoTest {

private ApplicationContext app;

private UserDao userDao;

@Before

public void before() throws Exception {

app = new ClassPathXmlApplicationContext("com/abin/lee/spring/redis/spring-redis.xml");

userDao = (UserDao) app.getBean("userDao");

}

@Test

public void crud() {

// -------------- Create ---------------

String uid = "u123456";

String address1 = "上海";

User user = new User();

user.setAddress(address1);

user.setUid(uid);

userDao.save(user);

// ---------------Read ---------------

user = userDao.read(uid);

System.out.println("address1="+user.getAddress());

assertEquals(address1, user.getAddress());

// --------------Update ------------

String address2 = "北京";

user.setAddress(address2);

userDao.save(user);

user = userDao.read(uid);

System.out.println("address2Save="+user.getAddress());

assertEquals(address2, user.getAddress());

// --------------Delete ------------

userDao.delete(uid);

user = userDao.read(uid);

System.out.println("addressdel="+user.getAddress());

assertNull(user);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中实现Redis的实时推送可以使用Redis的发布/订阅功能。Redis的发布/订阅功能是一种消息传递模式,它允许发送者(发布者)向一个或多个接收者(订阅者)发送消息。下面是使用Spring Boot和Redis实现Redis消息发布与监听的示例代码: 1. 添加Redis依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接 在application.properties文件中添加Redis连接配置: ``` spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 3. 定义消息监听器 定义一个Redis消息监听器,用于接收订阅的消息。示例代码如下: ``` @Component public class RedisMessageListener implements MessageListener { @Override public void onMessage(Message message, byte[] pattern) { System.out.println("Received message: " + message.toString()); } } ``` 4. 发布消息 在需要发布消息的地方,注入RedisTemplate对象,调用convertAndSend方法即可发送消息。示例代码如下: ``` @Autowired private RedisTemplate<String, Object> redisTemplate; public void sendMessage(String channel, String message) { redisTemplate.convertAndSend(channel, message); } ``` 5. 订阅消息 在启动类中定义Redis消息监听器容器,并将Redis消息监听器注册到容器中。示例代码如下: ``` @SpringBootApplication public class Application implements CommandLineRunner { @Autowired private RedisMessageListener redisMessageListener; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void run(String... args) throws Exception { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(redisConnectionFactory()); container.addMessageListener(redisMessageListener, new PatternTopic("test")); container.start(); } @Bean public JedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName("127.0.0.1"); config.setPort(6379); return new JedisConnectionFactory(config); } } ``` 以上代码中,容器使用Redis连接工厂创建,监听器注册到容器中,并使用PatternTopic定义订阅的消息通道。 这样,当有消息发布到指定通道时,RedisMessageListener的onMessage方法会被触发,从而实现了Redis的实时推送功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值