安装好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. [洛谷P1966] 火柴排队

    题目链接: 火柴排队 题目分析: 感觉比较顺理成章地就能推出来?似乎是个一眼题 交换的话多半会往逆序对上面想,然后题目给那个式子就是拿来吓人的根本没有卵用 唯一的用处大概是告诉你考虑贪心一波,很显然有 ...

  2. iOS之CGAffineTransform属性详解和方法使用

    1.CGAffineTransform简介 UIView有个属性transform,是CGAffineTransform类型.可以使其在二维界面做旋转.平移.缩放单独或者组合动画! CGAffineT ...

  3. C#窗体阴影

    /// <summary> /// 边框阴影 /// </summary> protected override CreateParams CreateParams { get ...

  4. 3、mysql读写性能优化方法

    1.当表格特别多的时候,所新建的表格一定注意索引,数据库内部对索引的处理能够很好的优化查询读写性能

  5. MySQL命令行本地登陆,远程登陆MySQL 的快捷键

    1.进入Mysql的安装目录bin文件夹下 如默认路径: cd C:\Program Files\MySQL\MySQL Server 8.0\bin 2.本地登录MySQL 命令:mysql -u ...

  6. ERROR:ORA-30076: 对析出来源无效的析出字段

    DEBUG:key: sql: select count(*) as col_0_0_ from jc_user cmsuser0_ where 1=1 and cmsuser0_.register_ ...

  7. DOM4J -(XML解析包)

    DOM4J - 简介 是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM, ...

  8. 关于开启Eureka安全Security认证后,客户端死活注册不上的问题

    遇到一个问题"开启Eureka服务端的安全认证后,客户端死活注册不到Eureka上",已经尝试了以下办法,完全搞不定... 客户端出错的版本: spring-boot:2.0.3. ...

  9. 利用Python覆盖图像的某一部分,即改变图形一块区域(Region)的RGBA值

    原图如下: 改变过后的图如下: 查阅API写法如下: from PIL import Image from PIL import ImageDraw pilim = Image.open('1.jpg ...

  10. 部分树形DP的优化

    ural1018. Binary Apple Tree 题目大意 有一棵n个节点的树,树上每个节点有一个值,选择m个节点使这些节点值的和最大 要求:如果选当前节点,则必须选它的父节点 解法: 我们设d ...