redis是开发中一种高效存取的数据库技术,下面就看一下最简单的用java操作redis进行存取数据的操作`
public class RedisUtils {
// 操作redis的客户端
private static Jedis jedis = new Jedis("localhost", 6379);
// 序列化工具类
private static RuntimeSchema<User> schema = RuntimeSchema.createFrom(User.class);
public static String put(User user){
// 生成对应的数据库存储的键值
String key = "name:" + user.getUsername();
/*
进行序列化操作得到字节数组
user:要被序列化的对象
LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE):缓冲区
内部实现:schema.writeTo(output, message);
*/
byte[] bytes =
ProtostuffIOUtil.toByteArray(user, schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
// 存储键值
String result = jedis.set(key.getBytes(), bytes);
// 存储成功之后返回OK
return result;
}
public static User get(String username){
// 得到键的字节数组
byte[] keyByte = ("name:" + username).getBytes();
// 得到相应的值的字节数组
byte[] bytes = jedis.get(keyByte);
// 构建一个空的user对象
User user = schema.newMessage();
// 将值的字节数组反序列化操作存储到user对象中,内部:schema.mergeFrom(input, message);
ProtostuffIOUtil.mergeFrom(bytes, user, schema);
if(null != user){
return user;
}
return null;
}
}
工具类写完之后看一下简单的测试
public class RedisTest {
@Test
public void testPut(){
User user = new User("张三", "123456");
String result = RedisUtils.put(user);
System.out.println(result);
}
@Test
public void testGet(){
User user = RedisUtils.get("张三");
System.out.println(user);
}
}
结果
OK
User{username='张三', password='123456'}
测试过程中两个需要注意的地方:
1.测试过程中redis服务器一定要开启,具体开启方法,进入redis目录下开启cmd,执行redis-server,注意中间是没有空格的。
2.测试需要的jar包