概念:Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache。总体redisTemplate 用的多。
(一)操作引用自:
redis 菜鸟教程(opsfor类型):
https://www.runoob.com/redis/redis-commands.html 这里事务,安装,操作,分区全有。
别人写的不错(配置util都有): https://blog.csdn.net/weixin_44030218/article/details/87897032#2SerializeUtilclass_207
opsforvalue: Redis 字符串数据类型的相关命令用于管理 redis 字符串
opsforHash: Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象
opsforList: Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)
其他人写的redis操作:
https://blog.csdn.net/ruby_one/article/details/79141940
(二) jedis操作redis 缓存(jedis类型 自己做的增删改查):
这个写的可以(配置util都有):
https://blog.csdn.net/weixin_44030218/article/details/87553193
CRUD:
/**
* 项目名称:Commodity-Web
* 文件名称:RedisController.java
* 包名:com.jk.commodity.controller
* 创建日期:2018年6月23日下午8:38:28
* Copyright (c) 2018, yuxy123@gmail.com All Rights Reserved.
*/
package com.jk.commodity.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jk.commodity.model.User;
import com.jk.commodity.service.RedisService;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
/**
* 项目名称:Commodity-Web
* 类名称:RedisController
* 类描述:
* 创建人:
* 创建时间:2018年6月23日 下午8:38:28
* 修改人:
* 修改时间:2018年6月23日 下午8:38:28
* 修改备注:
* @version
*/
@Controller
@RequestMapping(value="/Redis")
public class RedisController {
@Autowired
private RedisService redisService;
@Autowired
private ShardedJedisPool shardedJedisPool;
@RequestMapping(value="/queryRedis")
@ResponseBody
public String queryRedis(Integer offset,Integer limit){
List list=null;
//获取jedis
ShardedJedis jedis= shardedJedisPool.getResource();
Boolean exists = jedis.exists("list");
if(!exists){
if(jedis.setnx("synouc","1")==1){ //加锁
jedis.expire("synouc",20*60);//防止死锁
//这里不需要加offset,limit!!!
list= redisService.queryRedis();
HashMapmap=new HashMap<>();
for (User user : list) {
jedis.lpush("list",user.getUserid().toString());
map.put("userid",user.getUserid().toString());
map.put("username",user.getUsername());
map.put("userpas",user.getUserpas().toString());
jedis.hmset("list_"+user.getUserid().toString(),map);
Random random=new Random();//准备失效时间 随机
int nextInt = random.nextInt(100);
}
jedis.del("synouc");
jedis.expire("list",300*600);
}else{
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//如果你把redis 中删了则全依靠下面的代码重新生成!!他这个分页是针对redis的与查询方法无关,但是你前台任然得写 server!!!!!!!!!!!!!!!
List list2 = jedis.lrange("list", offset, offset+limit-1);
List
配置:
配置文件:
config.properties:
#db driver
jdbc.driver=com.mysql.jdbc.Driver
#db url
jdbc.url=jdbc:mysql://主机ip:3306/888?&useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8
#db username
jdbc.username=root
#db password
jdbc.password=root
#db maxActive
jdbc.maxActive=2
#db minIdle
jdbc.minIdle=5
#db maxIdle
jdbc.maxIdle=5
#redis
maxTotal=2000
maxIdle=50
redisHost=127.0.0.1
redisPort=6379
redisTimeout=3000
spring-context:
classpath:config.properties
Pom文件:
org.springframework.data
spring-data-redis
1.5.0.RELEASE
redis.clients
jedis
2.9.0
redis.client 这个jar包提供jedis的一些方法!!
**若是springboot 则可能是:**
org.springframework.boot
spring-boot-starter-cache
org.springframework.boot
spring-boot-starter-data-redis