https://blog.csdn.net/weixin_40496191/article/details/121028500
package redis.jedis;
import redis.clients.jedis.Jedis;
import java.util.Set;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_String {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//设置键值对
jedis.set("name", "zzk");
//设置键值对(不存在才会成功)
jedis.setnx("name", "zzk");
//设置键值对(带过期时间)
jedis.setex("name", 10, "zzk");
//查询键值
String name = jedis.get("name");
//查看库里的键情况
Set all = jedis.keys("*");
//查看库里的大小
Long size = jedis.dbSize();
//清空当前数据库
jedis.flushDB();
//清空所有数据库
jedis.flushAll();
//查看键是否存在
Boolean exist = jedis.exists("name");
//删除元素
jedis.del("name");
//设置过期时间
jedis.expire("name", 10);
//查看剩余时间
jedis.ttl("name");
//追加值,key不存在则新建
jedis.append("name", "zzk");
//查看长度
jedis.strlen("name");
//加1,比如浏览量
jedis.incr("age");
//减1
jedis.decr("age");
//加10
jedis.incrBy("age", 10);
//截取
jedis.getrange("name", 0, -1);
//截取
jedis.setrange("name", 1, "zhanzhk");
//取出并且设置,值取原来
jedis.getSet("name", "zahznhk");
//存对象
jedis.mset("zk:1", "{name1:zhanzhk1,age:8}");
//取对象
jedis.get("zk:1");
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.ListPosition;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_list {
public static void main(String[] args) {
//l开头:集合的进出顺序跟栈一样,先进后出。
//r开头:先进先出
//实际上算是个链表结构,往收尾插入效率最高,往中间插入效率低。
Jedis jedis = new Jedis("192.168.248.11", 6379);
//查看集合元素
jedis.lrange("name", 0, -1);
//插入集合元素到第一位
jedis.lpush("name", "zzk");
//插入集合元素到最后一位
jedis.rpush("name", "zzk");
//删除第一位元素
jedis.lpop("name");
//下标查找元素
jedis.lindex("name", 1);
//长度
jedis.llen("name");
//移除指定元素的数量
jedis.lrem("name", 10, "zzk");
//截取
jedis.ltrim("name", 0, 1);
//移除并且添加到其他集合
jedis.rpoplpush("name", "name1");
//是否存在集合
jedis.exists("name");
//替换值
jedis.lset("name", 1, "zzk");
//往某个元素前后插入值
jedis.linsert("name", ListPosition.BEFORE, "zzk", "zhanzhk");
jedis.linsert("name", ListPosition.AFTER, "zzk", "zhanzhk");
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_set {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//集合添加元素
jedis.sadd("name", "zzk");
//查看集合元素
jedis.smembers("name");
//判断是否存在某个元素
jedis.sismember("name", "zzk");
//查看元素个数
jedis.scard("name");
//移除元素
jedis.srem("name", "zzk");
//随机抽取,不写默认1个
jedis.srandmember("name", 2);
//移动指定元素到另一个集合
jedis.smove("name", "name1", "zzk");
//以第一个key为基础,查看第二个key和第一个的差集
jedis.sdiff("name", "name1");
//以第一个key为基础,查看第二个key和第一个的交集
jedis.sinter("name", "name1");
//并集
jedis.sunion("name", "name1");
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_zset {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//添加
jedis.zadd("name", 1, "zzk");
//查看
jedis.zrange("name", 0, -1);
//按照序号排序
jedis.zrangeByScore("name", 0, -1);
//按照序号排序陪参数:zrangebyscore key -inf + inf withscores
//查看数量
jedis.zcard("name");
//查看区间数量
jedis.zcount("name", 0, 100);
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_hash {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//添加元素
jedis.hset("name", "type1", "zzk");
//查看元素
String type1 = jedis.hget("name", "type1");
//查看所有元素
Map all = jedis.hgetAll("name");
//删除集合元素
jedis.hdel("name", "type1");
//查看集合长度
jedis.hlen("name");
//查看某个元素是否存在
jedis.hexists("name", "type1");
//查看所有的key
Set allkey = jedis.hkeys("name");
//查看所有的值
List allvalue = jedis.hvals("name");
//某个属性自增
jedis.hincrBy("name", "age", 1);
//key不存在创建,存在不创建
jedis.hsetnx("name", "type1", "zzk");
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.GeoRadiusParam;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_genpos {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//新增
jedis.geoadd("china:city", 125.01, 95.25, "beijing");
jedis.geoadd("china:city", 122.01, 91.25, "shanghai");
jedis.geoadd("china:city", 120.01, 88.25, "chongqing");
//距离
jedis.geodist("china:city", "beijing", "shanghai");
//距离指定带单位
jedis.geodist("china:city", "beijing", "shanghai", GeoUnit.KM);
//扫描半径
jedis.georadius("china:city", 125.01, 95.25, 5000, GeoUnit.KM);
//扫描半径,经纬度指定数量
jedis.georadius("china:city", 125.01, 95.25, 5000, GeoUnit.KM, new GeoRadiusParam().count(2));
//找出某个城市周边的城市
jedis.georadiusByMember("china:city", "chongqing", 5000, GeoUnit.KM);
//可以用zset命令查看
jedis.zrange("china:city", 0, -1);
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_hyperloglog {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.11", 6379);
//添加元素
jedis.pfadd("name", "zzk");
jedis.pfadd("name", "zzk1");
jedis.pfadd("name", "zzk2");
jedis.pfadd("name1", "zzk2");
jedis.pfadd("name1", "zzk3");
jedis.pfadd("name1", "zzk4");
//合并并集
jedis.pfmerge("name", "name1");
//查看数量
jedis.pfcount("name");
jedis.close();
}
}
package redis.jedis;
import redis.clients.jedis.Jedis;
/**
* @author 天真热
* @create 2021-09-25 20:47
* @desc
**/
public class Redis_bitmaps {
public static void main(String[] args) {
// 都是操作二进制位进行记录,只有0和1两种状态,只有两种状态的情况可以使用
Jedis jedis = new Jedis("192.168.248.11", 6379);
//添加打卡记录(一周打卡例子)
jedis.setbit("sign", 1, true);
jedis.setbit("sign", 2, true);
jedis.setbit("sign", 3, false);
jedis.setbit("sign", 4, true);
jedis.setbit("sign", 5, false);
jedis.setbit("sign", 6, true);
jedis.setbit("sign", 7, true);
//获取打卡
jedis.getbit("sign", 1);
//统计打卡记录
jedis.bitcount("sign");
jedis.close();
}
}
pom文件
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.projectlombok
lombok
redis.clients
jedis
3.2.0
org.springframework.boot
spring-boot-starter-data-redis
配置文件
server:
port: 8090
spring:
redis:
host: 192.168.248.11
port: 6379
配置类
package redis.redis.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.StringRedisConnection;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.net.UnknownHostException;
/**
* @author 天真热
* @create 2021-09-27 21:35
* @desc
**/
@Configuration
public class RedisConfig {
/**
* 自定义RedisTemplate
*
* @param redisConnectionFactory
* @return
* @throws UnknownHostException
*/
@Bean
@SuppressWarnings("all")
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
//为了开发方便,一般使用类型
RedisTemplate template = new RedisTemplate();
//连接工厂,默认
template.setConnectionFactory(redisConnectionFactory);
//Json序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//使用ObjectMapper进行转义
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//String序列化配置
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key采用String方式序列化
template.setKeySerializer(stringRedisSerializer);
//hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
//value序列化采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
//hash的value序列化采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
redis调用工具类
package redis.redis.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtil {
@Autowired
@Qualifier("redisTemplate")
public static RedisTemplate redisTemplate;
@Resource
public void setRedisTemplate(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
//**********************************String类型,按需编写工具类***************************************
public static void StringSetMethod() {
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("name", "zzk");
}
public static String StringGetMethod() {
ValueOperations valueOperations = redisTemplate.opsForValue();
return objToString(valueOperations.get("name"));
}
//**********************************list类型,按需编写工具类***************************************
public static void listMethod() {
ListOperations listOperations = redisTemplate.opsForList();
listOperations.leftPush("name", "zzk");
}
//**********************************set类型,按需编写工具类***************************************
public static void setMethod() {
SetOperations setOperations = redisTemplate.opsForSet();
setOperations.add("name", "zzk");
}
//**********************************zset类型,按需编写工具类***************************************
public static void zsetMethod() {
ZSetOperations zsetOperations = redisTemplate.opsForZSet();
zsetOperations.add("name", 1, 1d);
}
//**********************************hsah类型,按需编写工具类***************************************
public static void hashMethod() {
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.put("name", "type1", "zzk");
}
public static String objToString(Object obj) {
if (obj == null) {
return "";
} else {
return obj.toString();
}
}
}