IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 在Java中使用Redis的方法 -> 正文阅读

[大数据]在Java中使用Redis的方法

前提

  1. 可供访问的Redis服务器 可以自己在本地启动虚拟机

如何在本地启动一个Redis参考bilibili尚硅谷Redis6

SpringBoot项目中需要添加的依赖

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

常见的用法

  1. 工具类 用于获取Redis连接
public class JedisUtils {
	public static Jedis getJedisClient(){
		Jedis jedis = new Jedis("192.168.110.101",6379);
		return jedis;
	}
}
  1. 检测本地Redis是否可以使用
@Test
public  void pingTest(String[] args) {
		Jedis jedis = new Jedis("192.168.110.101",6379);
		String ping = jedis.ping();
		// 当Redis能使用时 会输出pong
		System.out.println(ping);
	}
  1. 关于Redis String 类型的API
@Test
	public void StringTest(){
		Jedis jedis = new Jedis("192.168.110.101",6379);
		jedis.set("name","lucy");
		//redis 批量添加多个k v ?
		jedis.mset("k1","v1","k2","v2");
		List<String> mget = jedis.mget("k1", "k2");

		String name = jedis.get("name");
		System.out.println(name);
	}
  1. 关于Jedis set 类型API
@Test
public void setTest(){
		//操作set 集合
		Jedis jedisClient = JedisUtils.getJedisClient();
		//set中添加元素
		jedisClient.sadd("name1","lucy","mary","jack");
		Set<String> name = jedisClient.smembers("name1");
		//set中删除元素
		jedisClient.srem("name1","lucy");
		Set<String> name1 = jedisClient.smembers("name1");
		System.out.println(name1);
		System.out.println(name);
	}
  1. 关于Jedis hash类型的API
@Test
public void hashTest(){
		// hash的两种添加值方式以及取值方式
		Jedis jedisClient = JedisUtils.getJedisClient();
     	jedisClient.hset("hset","lucy","20");
     	String hget = jedisClient.hget("hset", "lucy");
		System.out.println(hget);

		Map<String,String> hashTsetMap = new HashMap<>(16);
		hashTsetMap.put("jack","30");
		jedisClient.hset("hset",hashTsetMap);
		List<String> age = jedisClient.hmget("hset","lucy");
		System.out.println(age);

		jedisClient.hdel("hset","lucy");
		String lucy = jedisClient.hget("hset", "lucy");
		System.out.println(lucy);
	}
  1. zSet类型API
@Test
	public void zSetTest(){
		Jedis jedisClient = JedisUtils.getJedisClient();

		jedisClient.zadd("china",100d,"shanghai");

		Set<String> china = jedisClient.zrange("china", 0, -1);
		System.out.println(china);
	}

使用Redis实现一个简易版短信注册功能

/**
	 * 注册功能
	 * 生成手机验证码 且五分钟内有效
	 * 1.连接redis
	 * 2.判断验证码生成的次数
	 * 3.生成验证码 调用短信发送API
	 * 4.前台回传验证码 ,校验验证码的有效性
	 * 5.注册成功
	 * @param args
	 */
	 //
	public void getMessage() {
		try (Jedis jedisClient=JedisUtils.getJedisClient()){

			String phone = "12345678";
			if (getGenerateTimes(phone,jedisClient)){
				String verificationCode = getVerificationCode(phone, jedisClient);
				System.out.println(verificationCode);
			}else {
				System.out.println("超过短信次数");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}


	}
	public static final String KEY = "generateTime";
	public static final Integer Max_TIME = 2;
	public static final Integer MINI_TIME = 0;
	// 计算一天发送短信的次数 不能超过三次
	public static boolean getGenerateTimes(String phone, Jedis client){
		String times = client.get(phone+KEY);
		if (times==null){
			client.setex(phone+KEY, 24*60*60,MINI_TIME.toString());
		}
		// 使用Interger.valueOf不能转换? 
		//基本类的包装类无法自动拆箱进行相互比较
		if (Integer.parseInt(times)>Max_TIME.intValue()){
			return false;
		}
		client.incr(phone+KEY);
		return true;
	}

	/**
	 * 生成六位数验证码 调用api发送短信到手机
	 * @param phone
	 * @param client
	 * @return
	 */
	public static String getVerificationCode(String phone, Jedis client){
		Random random = new Random();
		StringBuffer stringBuffer = new StringBuffer();
		// 有更好的方法生成六位随机数
		for (int j = 0; j < 6; j++) {
			stringBuffer.append(random.nextInt(10));
		}
		// 调用短信API发送 并做对应的业务判断


		// 发送短信成功 将数据放入redis 并设置过期时间为五分钟
		String setex = client.setex(phone, 300, stringBuffer.toString());
		return stringBuffer.toString();
	}

	public static Boolean verification(String phone, String code, Jedis client){
		String storeCode = client.get(phone);
		if (code!=null&&code.equals(storeCode)){
			return Boolean.TRUE;
		}

		return Boolean.FALSE;
	}

	@Test
	public void verificationTest(){
		try(Jedis jedisClient = JedisUtils.getJedisClient()) {

			if (verification("12345678","465481",jedisClient)){
				System.out.println("校验成功");
			}else {
				System.out.println("校验失败");
			}
		}
	}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:31:26  更:2022-05-12 16:33:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/29 10:31:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码