安装好redis,进行了基本的操作。包括对map list 和自定义对象的基本操作。笔记都在代码注释里,直接上代码。

private Jedis jedis;

    @Before
public void before() {
jedis = new Jedis("127.0.0.1");
} /**
* 简单添加
*/
@Test
public void test1() {
String name = "name";
String value = "qq";
jedis.set(name, value);
System.out.println("追加前:" + jedis.get(name)); // 追加前:qq // 在原有值得基础上添加,如若之前没有该key,则导入该key
jedis.append(name, "ww");
System.out.println("追加后:" + jedis.get(name)); // 追加后:qqww jedis.append("id", "ee");
System.out.println("没此key:" + jedis.get(name));
System.out.println("get此key:" + jedis.get("id")); } /**
* mset 是设置多个key-value值 参数(key1,value1,key2,value2,...,keyn,valuen) mget
* 是获取多个key所对应的value值 参数(key1,key2,key3,...,keyn) 返回的是个list
*/
@Test
public void test2() {
jedis.mset("name1", "aa", "name2", "bb", "name3", "cc");
System.out.println(jedis.mget("name1", "name2", "name3"));
} /**
* map
*/
@Test
public void test3() {
Map<String, String> map = new HashMap<String, String>();
map.put("name", "fujianchao");
map.put("password", "123");
map.put("age", "12");
// 存入一个map
jedis.hmset("user", map); // map key的个数
System.out.println("map的key的个数" + jedis.hlen("user")); // map key
System.out.println("map的key" + jedis.hkeys("user")); // map value
System.out.println("map的value" + jedis.hvals("user")); // (String key, String... fields)返回值是一个list
List<String> list = jedis.hmget("user", "age", "name");
System.out.println("redis中key的各个 fields值:"
+ jedis.hmget("user", "age", "name") + list.size()); // 删除map中的某一个键 的值 password
// 当然 (key, fields) 也可以是多个fields
jedis.hdel("user", "age"); System.out.println("删除后map的key" + jedis.hkeys("user")); } /**
* list
*/
@Test
public void test4() { jedis.lpush("list", "aa");
jedis.lpush("list", "bb");
jedis.lpush("list", "cc");
System.out.println(jedis.lrange("list", 0, -1));
System.out.println(jedis.lrange("list", 0, 1));
System.out.println(jedis.lpop("list")); // 栈顶
jedis.del("list");
} /**
* 自定义对象 User为例 id name
*
* RedisTemplate 中有 序列化和反序列化
* 如:template.getStringSerializer().serialize("name")
*/
@Test
public void test5() { User user = new User();
user.setId(123);
user.setName("fighter"); // 存入一个 user对象
jedis.set("user".getBytes(), SerializationUtil.serialize(user)); // 获取
byte[] bs = jedis.get("user".getBytes());
User desUser = (User) SerializationUtil.deserialize(bs);
System.out.println(desUser.getId() + ":" + desUser.getName()); }

对于自定义对象,需要进行序列化和反序列化:我这里提取出了一个工具类,

SerializationUtil.java
/**
* 序列化就是将一个对象转换为二进制的数据流。这样就可以进行传输,或者保存到文件中。如果一个类的对象要想实现序列化,就必须实现serializable接口。在此接口中没有任何的方法,此接口只是作为一个标识,表示本类的对象具备了序列化的能力而已。
* 反序列化:将二进制数据流转换成相应的对象。
* 如果想要完成对象的序列化,则还要依靠ObjectOutputStream和ObjectInputStream,前者属于序列化操作,而后者属于反序列化操作。
*
*/ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; public class SerializationUtil {
/**
* 序列化
*
* @param object
* @return
*/
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
}
return null;
} /**
* 反序列化
*
* @param bytes
* @return
*/
public static Object deserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) { }
return null;
} }

还有都熟悉的User类。我只简单实用id和name,测试,也贴一下吧

public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1530813282496676263L;
private Integer id;
private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }

昨天也进行了与spring的整合。整理一下

 

redis jedis存储对象简单操作,map list 自定义对象的更多相关文章

  1. 征服 Redis + Jedis + Spring —— 配置&常规操作

    Spring提供了对于Redis的专门支持:spring-data-redis.此外,类似的还有: 我想大部分人对spring-data-hadoop.spring-data-mongodb.spri ...

  2. redis 哈希数据类型简单操作(实现购物车案例)

    这里不累赘如何安装redis和php  redis扩展,主要熟悉调用redis哈希数据类型 简单方法操作如下 1:hSet 2:hGet 4:hDel 5:hGetAll 4:hExists 5:hI ...

  3. EntityFrameWork简单操作 EF数据上下文对象操作数据增删改差及批处理

    /// <summary> /// EF针对 留言数据库 的 数据上下文对象!!!! /// </summary> static LeaveWordBoradEntities ...

  4. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  5. Redis + Jedis + Spring (list操作)

    为了简便操作,我使用了StringRedisTemplate.用字符串操作做展示.当然,你可以继续使用RedisTemplate. 闲言少叙,上代码,一目了然: /** * Mar 5, 2013 * ...

  6. redis的安装和简单操作

    安装gcc  目地是编译软件 yum install gcc-c++ 1.拷贝并解压 2.编译文件 到解压目录下 执行 make 进行编译依赖项 cd /deps make hiredis lua j ...

  7. php类与对象简单操作

    <?php /* * Created on 2015-8-25 * * To change the template for this generated file go to * Window ...

  8. java中json包的使用以及字符串,map,list,自定义对象之间的相互转换

    做一个map和字符串的转换,需要导入这些jar包,这是最基本的一些jar包. 经过多方尝试得出结论入下: 首先导入基本包:json-lib-2.2.3-jdk15.jar 如果没有这个jar包,程序是 ...

  9. iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

    1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...

随机推荐

  1. C++Builder 常用String

    关于AnsiSting的使用大全(1) arrow: Ansistring 转 char 代码: void __fastcall TForm1::Button1Click(TObject *Sende ...

  2. Spring Boot与监控管理

    概念: 通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能.我们可以通过HTTP,JMX,SSH协议来进行操作 ...

  3. React报错:Laravel React-Router browserHistory 刷新子页面报错404

    举例:myblog.com/ 刷新没问题 myblog.com/add 刷新404 browserHistory报404,hashHistory却正常 原因是少路由.web.php添加路由 Route ...

  4. Composer的简介说明与安装

    https://mp.weixin.qq.com/s/aSZRhoa2-JjKOTRVhPdxdQ Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为 ...

  5. 【breathandlife】气势磅礴、比较好听的旋律有哪些?

    [breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...

  6. PAT甲级——A1066 Root of AVL Tree

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  7. java基础之System类

    System类概述System 类包含一些有用的类字段和方法.它不能被实例化. 成员方法 public static void gc()运行垃圾回收器 public static void exit( ...

  8. HttpException (0x80004005): 无法连接到 SQL Server 会话数据库

    ASP.NET 项目运行时出现错误提示:[HttpException (0x80004005): 无法连接到 SQL Server 会话数据库.] ,后排查问题发现是由于项目的Session模式是使用 ...

  9. python随机生成图片

    #-*-coding:utf-8-*- import tensorflow as tf import numpy as np import cv2 image = tf.random_uniform( ...

  10. 嘴巴题8 BZOJ2318: Spoj4060 game with probability Problem

    Time Limit: 1 Sec Memory Limit: 128 MB Submit: 555 Solved: 273 [Submit][Status][Discuss] Description ...