java操作redis: 将string、list、map、自定义的对象保存到redis中

【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中

 

转自:http://www.tuicool.com/articles/U7JNre

/**

*  @param args

*/

public static void main(String[] args) {

 

//连接 redis 服务

Jedis jedis =  new Jedis( "192.168.88.15" ,6379);

 

//密码验证-如果你没有设置 redis 密码可不验证即可使用相关命令

//        jedis.auth(" abcdefg ");

 

//简单的key-value 存储

jedis.set( "redis" ,  "myredis" );

System. out .println(jedis.get( "redis" ));

 

//在原有值得基础上添加,如若之前没有该key,则导入该key

//之前已经设定了 redis 对应" myredis ",此句执行便会使 redis 对应" myredisyourredis"

jedis.append( "redis" ,  "yourredis" );   

jedis.append( "content" ,  "rabbit" );

 

// mset  是设置多个key-value值   参数(key1,value1,key2,value2,..., keyn , valuen )

// mget  是获取多个key所对应的value值  参数(key1,key2,key3,..., keyn )  返回的是个list

jedis.mset( "name1" , "yangw" , "name2" , "demon" , "name3" , "elena" );

System. out .println(jedis.mget( "name1" , "name2" , "name3" ));

 

//map

Map<String,String> user =  new HashMap<String,String>();

user.put( "name" ,  "cd" );

user.put( "password" ,  "123456" );

//map存入 redis

jedis.hmset( "user" , user);

// mapkey 个数

System. out .println(String. format ( "len:%d" , jedis.hlen( "user" )));

//map中的所有键值

System. out .println(String. format ( "keys: %s" , jedis.hkeys( "user" ) ));

//map中的所有value

System. out .println(String. format ( "values: %s" , jedis.hvals( "user" ) ));

//取出map中的name字段值

List<String> rsmap = jedis.hmget( "user" ,  "name" , "password" );

System. out .println(rsmap);

//删除map中的某一个键值 password

jedis.hdel( "user" ,  "password" );

System. out .println(jedis.hmget( "user" ,  "name" ,  "password" ));

 

//list

jedis.del( "listDemo" );

System. out .println(jedis.lrange( "listDemo" , 0, -1));

jedis.lpush( "listDemo" ,  "A" );

jedis.lpush( "listDemo" ,  "B" );

jedis.lpush( "listDemo" ,  "C" );

System. out .println(jedis.lrange( "listDemo" , 0, -1));

System. out .println(jedis.lrange( "listDemo" , 0, 1));

 

//set

jedis.sadd( "sname" ,  "wobby" );

jedis.sadd( "sname" ,  "kings" );

jedis.sadd( "sname" ,  "demon" );

System. out .println(String. format ( "set num: %d" , jedis.scard( "sname" )));

System. out .println(String. format ( "all members: %s" , jedis.smembers( "sname" )));

System. out .println(String. format ( "is member: %B" , jedis.sismember( "sname" ,  "wobby" )));

System. out .println(String. format ( "rand member: %s" , jedis.srandmember( "sname" )));

//删除一个对象

jedis.srem( "sname" ,  "demon" );

System. out .println(String. format ( "all members: %s" , jedis.smembers( "sname")));        

}

二、将自定义对象保存到redis中:

1、自定义pojo 实现Serializable 接口:

package  cn.mingyuan.redis;

import  java.io.Serializable;

/**

* 测试用 pojo ,实现了 Serializable ,以便进行系列化操作

*  @author mingyuan

*/

public   class  Person  implements  Serializable {

private static final long serialVersionUID = -3562550857760039655L;

 

private String  name ;

private int age ;

public Person(){}

public Person(String name,  int age) {

super ();

this . name = name;

this . age = age;

}

public String getName() {

return name ;

}

public void setName(String name) {

this . name = name;

}

public int getAge() {

return age ;

}

public void setAge( int age) {

this . age = age;

}

@Override

public String toString() {

return "Person [name=" +  name +  ", age=" +  age +  "]" ;

}

}

2、测试类:

package  cn.mingyuan.redis;

import  java.io.ByteArrayInputStream;

import  java.io.ByteArrayOutputStream;

import  java.io.IOException;

import  java.io.ObjectInputStream;

import  java.io.ObjectOutputStream;

import  redis.clients.jedis.Jedis;

public   class  Test {

/**

*  @param args

*  @throws IOException

*  @throws ClassNotFoundException

*/

public static void main(String[] args)  throws IOException,

ClassNotFoundException {

//         Jedis redis = new   Jedis ("192.168.88.15");

Jedis redis =  new Jedis( "192.168.88.15" , 6379);

// connect可以不要,因为在执行set操作的时候会先进行判断客户端是否于服务器端建立了连接,若无,则启动连接过程

redis.connect();

String set = redis.set( "mingyuan" ,  "1" );

System. out .println( " set result \t" + set);

redis.incr( "mingyuan" );

String string = redis.get( "mingyuan" );

System. out .println( " get result of key 'mingyuan' \t" + string);

// 下面是对对象进行存储的测试代码

ByteArrayOutputStream bos =  new ByteArrayOutputStream();

ObjectOutputStream oos =  new ObjectOutputStream(bos);

 

Person person =  new Person( "liudehua" ,22);

oos.writeObject(person);

byte [] byteArray = bos.toByteArray();

oos.close();

bos.close();

String setObjectRet = redis.set( "mingyuan" .getBytes(), byteArray);

System. out .println( " set object return \t" + setObjectRet);

byte [] bs = redis.get( "mingyuan" .getBytes());

ByteArrayInputStream bis =  new ByteArrayInputStream(bs);

ObjectInputStream inputStream =  new ObjectInputStream(bis);

Person readObject = (Person) inputStream.readObject();

System. out .println( " read object \t" + readObject.toString());

inputStream.close();

bis.close();

redis.disconnect();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值