java中(Spring MVC )jedis的操作合集
0.前言
项目中需要用到redis进行登陆信息的存储,项目框架是Spring MVC,目前已经集成了jedis了。这篇文章主要介绍jedis操作redis的一些基本操作。
注:jedis是redis的java客户端版本,是redis官方推荐的连接方式。
1.jedis的连接
如果你项目的单独的测试可以用下面的方式来连接。
Jedis redis = new Jedis ("127.0.0.1",6379);//连接redis
redis.auth("123456");//验证密码
我的项目因为用下面的配置文件集成了:
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="genericObjectPoolConfig"/>
<constructor-arg name="host" value="${redis.host}"/>
<constructor-arg name="port" value="${redis.port}"/>
<constructor-arg name="timeout" value="${redis.timeout}"/>
<constructor-arg name="password" value="${redis.password}"/>
</bean>
所以在使用的时候只要导入
@Autowired
private JedisPool jedisPool;
然后在使用的地方使用下面代码就可以操作jedis了
Jedis jedis = jedisPool.getResource();
2.jedis的操作字符串String
Jedis jedis = jedisPool.getResource();
jedis.set("user","admin");
String name= jedis.get("user");
可以一次性设置多个键值对
jedis.mset("user","12345","pwd","654321");
如果某些键的值是数字的情况下,可以通过下面
jedis.incr("user"); //对user字段进行加1操作
3.jedis操作Map
简单的业务需求一般来说只存取一个键值对就行,但是稍微复杂一点的可能需要存取一个简单对象。
Jedis jedis = jedisPool.getResource();
Map<String, String> map = new HashMap<String, String>();
map.put("name", "zhangsan");
map.put("age", "18");
map.put("tel", "13112345678");
可以通过下面的代码进行取的操作:
Jedis jedis = jedisPool.getResource();
Map<String, String> map = new HashMap<String, String>();
map.put("name", "zhangsan");
map.put("age", "18");
map.put("tel", "13112345678");
jedis.hmset("user",map);
List<String> rsmap1 = jedis.hmget("user", "name");
List<String> rsmap2 = jedis.hmget("user", "name","age","tel");
rsmap1 是取的user字段中的name的值。
rsmap2 是取的user字段中name、age、tel的值。
如下图,取出的数据是ArrayList类型
除此之外,还有其他操作:
jedis.hdel("user","name"); //删除某个键值对
jedis.hlen("user"); //返回key为user中的存放的所有值的个数
jedis.exists("user"); //是否存在key为user的记录
jedis.hkeys("user");//返回map对象中所有的key
jedis.hvals("user");// 返回mapd对象中所有的value
//循环输出
Iterator<String> iter=jedis.hkeys("user").iterator();
while (iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+jedis.hmget("user",key));
}
4.jedis操作JSONobject
JSONObject object = new JSONObject();
object.put("name", "zhangsan");
object.put("age", "18");
object.put("tel", "13112345678");
jedis.set("user",object.toString());
可以看到,存的时候以json的形式存到了redis中了。
取的时候用JSON.parseObject就行,像下面这样:
JSONObject object = new JSONObject();
object.put("name", "zhangsan");
object.put("age", "18");
object.put("tel", "13112345678");
jedis.set("user",object.toString()); //把object转换成string存进去。
JSONObject object1 = JSON.parseObject(jedis.get("user")); //取出数据,并用JSON工具转换成对象
可以看到,这样返回的可以操作object了。
5.jedis操作List
存放数据:
Jedis jedis = jedisPool.getResource();
//存放4条数据
jedis.lpush("user","admin");
jedis.lpush("user","test");
jedis.lpush("age","18");
jedis.lpush("tel","13112345678");
取数据:
jedis.lrange("user",0,-1);
第一个参数是key,第二个参数是起始位置,第三个参数是结束位置,-1表示取所有的。
7.jedis操作JSONArray
上面的操作如果满足不了需求,可以用上面的JSONObject和JSONArray配合使用。
Jedis jedis = jedisPool.getResource();
JSONArray arr = new JSONArray();
JSONObject object1 = new JSONObject();
JSONObject object2 = new JSONObject();
object1.put("user","admin");
object1.put("pwd","123456");
arr.add(object1);
object2.put("user","test");
object2.put("pwd","123456");
arr.add(object2);
jedis.set("users",arr.toJSONString());
这个创建后就像下面这样。
取数据的话可以通过for循环取数据进行判断。
Jedis jedis = jedisPool.getResource();
JSONArray arr = new JSONArray();
JSONObject object1 = new JSONObject();
JSONObject object2 = new JSONObject();
object1.put("user","admin");
object1.put("pwd","123456");
arr.add(object1);
object2.put("user","test");
object2.put("pwd","123456");
arr.add(object2);
jedis.set("users",arr.toJSONString());
//取出
String result = jedis.get("users"); //取出
JSONArray res = JSONArray.parseArray(result);
for(int i=0;i<res.size();i++){
JSONObject obj = (JSONObject) res.get(i);
obj.get("user"); //读取某个对象 user键值
obj.get("pwd"); //读取某个对象的 pwd键值
}