redis的简单使用,以及spring-redis整合
来源:互联网 发布:海报字体软件 编辑:程序博客网 时间:2024/06/15 21:08
redis 简介:
Redis支持数据的持久化(跟关系型数据库作用相同,所以redis可以当做数据库来使用),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list(列表),set(集合),sorted set(有序集合),hash(哈希用来存贮对象)等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
redis优势:
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s。
丰富的数据类型– Redis支持二进制案例的 Strings, Lists, Hashes, Sets及 Ordered Sets数据类型操作。
原子(事务)– Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe,通知, key过期等等特性
redis使用场景:
redis适用于select 语句查询,而且存放的数据是频繁,大批量的访问的数据。
请求过来,redis里面有没有?有就给用户
没有查询数据库
数据库里面有没有?没有告诉用户没有
有就查询出来,给用户,并且存放到redis
spring-redis整合:
新增的jar包:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="100" />
<property name="maxTotal" value="15" />
<property name="maxWaitMillis" value="10000" />
<property name="testOnBorrow" value="true" />
</bean>
<!-- 连接服务器参数 -->
<bean id="connectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="127.0.0.1" />
<property name="password" value="" />
<property name="port" value="6379" />
<property name="poolConfig" ref="jedisPoolConfig" />
</bean>
<property name="connectionFactory" ref="connectionFactory" />
</bean>
private static final long serialVersionUID = -4135517288939641518L;
private static final String OBJECT_KEY = "USER";
private String id;
private String username;
private String password;
public User(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
/**
* 无参构造方法
*/
public User() {
}
/**
* 获取id
* @return
*/
public String getId() {
return id;
}
/**
* 设置id
* @return
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取username
* @return
*/
public String getUsername() {
return username;
}
/**
* 设置username
* @return
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取password
* @return
*/
public String getPassword() {
return password;
}
/**
* 设置password
* @return
*/
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
/**
* 通过id获取具体实例
* @return
*/
public String getKeyById() {
return getId();
}
/**
* 根据Object获取 具体存入的hash表
* @return
*/
public String getOBJECT() {
return OBJECT_KEY;
}
/**
* 新增ById
*/
public void putById(User user);
/**
* 批量增加
* @param user
*/
public void putManyById(String OBJECTKEY,Map<String, User> map);
/**
* 删除ById
*/
public void delById(User key);
* 获取ById
*/
public User getById(User key);
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.redis.service.RedisDao;
@Service
public class RedisDaompl implements RedisDao{
/**
* 注入RedisTemplate
*/
@Autowired
private RedisTemplate<String,User> redisTemplate;
/**
*添加第一个参数为实体类的 key(唯一) (本实体类所有的对象,都放在这个键里面)
*第二个参数为实体类某个具体实例的key
*第三个参数为要加入的对象
* @param user
*/
@Override
public void putById(User user) {
redisTemplate.opsForHash().put(user.getOBJECT(),user.getKeyById(), user);
}
/**
*获取第一个参数为实体类的 key(唯一)
*第二个参数为某个具体实例的key
* get时 1.先根据key.getOBJECT()获取整个hash 2.根据key.getKey获取某个具体实例
*
* @param user
*/
public User getById(User key) {
return (User) redisTemplate.opsForHash().get(key.getOBJECT(), key.getKeyById());
}
/**
*删除第一个参数实体类的key
*第二个参数具体实例的key
*删除的时候传入要删除的对象redisTemplate根据key.getObjectKey()找到要删除的值(多个)
*然后根据 key.getId()找到要删除的具体实例
* @param user
*/
public void delById(User key) {
redisTemplate.opsForHash().delete(key.getOBJECT(), key.getKeyById());
}
public void putManyById(String OBJECTKEY,Map<String, User> map) {
redisTemplate.opsForHash().putAll(OBJECTKEY, map);
}
import java.util.Map;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
RedisDaompl dao = app.getBean(RedisDaompl.class);
User user1 = new User("1","张三","123456");
User user2 = new User("2","李四","654321");
User user3 = new User("3","王五","456789");
User user4 = new User("4","麻六","987654");
// 添加
dao.putById(user1);
dao.putById(user2);
//批量增加
Map<String,User> map = new HashMap<String,User>();
map.put(user3.getId(), user3);
map.put(user4.getId(), user4);
dao.putManyById(user3.getOBJECT(), map);
//获取
System.out.println("user1"+dao.getById(user1));
System.out.println("user2"+dao.getById(user2));
System.out.println("user3"+dao.getById(user3));
System.out.println("user4"+dao.getById(user4));
// 删除user1 和user2
dao.delById(user1);
dao.delById(user2);
// 再次获取
System.out.println("user1"+dao.getById(user1));
System.out.println("user2"+dao.getById(user2));
System.out.println("user3"+dao.getById(user3));
System.out.println("user4"+dao.getById(user4));
}
}
user2=User [id=2, username=李四, password=654321]
user3=User [id=3, username=王五, password=456789]
user4=User [id=4, username=麻六, password=987654]
user1=null
user2=null
user3=User [id=3, username=王五, password=456789]
user4=User [id=4, username=麻六, password=987654]
- redis的简单使用,以及spring-redis整合
- spring 整合 redis,以及spring的RedisTemplate如何使用
- Spring 整合Redis以及Spring的RedisTemplate如何使用
- spring 整合 redis,以及spring的RedisTemplate如何使用
- spring 整合 redis,以及spring的RedisTemplate如何使用
- spring 整合 redis,以及spring的RedisTemplate如何使用
- spring 整合 redis,以及spring的RedisTemplate如何使用
- spring 整合 redis,以及spring的RedisTemplate如何使用
- Spring简单整合redis
- redis整合spring实现简单的操作
- spring 整合redis的简单操作
- 简单的redis与spring整合
- Spring+redis的整合
- spring整合redis简单demo
- spring与redis整合,redisTemplate的使用
- redis与java spring的整合使用
- 使用Redis的jedis客户端整合spring
- Spring整合redis使用Java操作redis
- 初步测试IM开源项目:TeamTalk
- NS2数据包分析
- 57. Insert Interval & 56. Merge Intervals
- JS高级---argument详解(一看机会)
- Day08-Android网络编程基础
- redis的简单使用,以及spring-redis整合
- 计时器——setTimeout、setInterval相关的精悍代码
- 再按一次退出业务逻辑代码
- java 使用字节流读写数据
- 安装setuptools和pip
- (159)材质表达式参考资料
- 自考总结
- Day09-Android中对Activity的理解(回答下面问题)
- 阿里物联网套件-服务端SDK学习实践(基础篇-9根据设备名称查询设备信息)