Jedis
Jedis是一个java的模块,用来连接和操作我们的Redis数据库。类似于以前我们用我们的jdbc操作我们的mysql数据库。
在使用Jedis 连接redis之前,需要修改redis.conf的配置文件:
- redis.conf中注释掉bind 127.0.0.1(127.0.0.1表示只支持localhost连接,不支持远程连接)
- protected-mode no(关闭protected-mode模式,此时外部网络可以直接访问;开启protected-mode保护模式,需配置bind ip或者设置访问密码)
- systemctl status firewalld关闭防火墙
spring整合redis
1、\pom文件中引入 jar包:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
2、连接测试
public static void main(String[] args) {
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
//测试
String value = jedis.ping();
System.out.println(value);
}
3、jedis对各中数据类型的操作
//操作zset
@Test
public void demo5(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
jedis.zadd("china",100d,"上海");
jedis.zadd("china",200d,"北京");
System.out.println(jedis.zrange("china",0,-1));
Set<String> keys = jedis.keys("*");
for (String str: keys) {
System.out.println(str);
}
}
//操作hash
@Test
public void demo4(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
jedis.hset("users", "age", "20");
String hget = jedis.hget("users", "age");
System.out.println(hget);
Set<String> keys = jedis.keys("*");
for (String str: keys) {
System.out.println(str);
}
}
//操作set
@Test
public void demo3(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
jedis.sadd("names","lucy","jack");
Set<String> names = jedis.smembers("names");
System.out.println(names);
jedis.srem("names","lucy");
System.out.println(jedis.smembers("names"));
Set<String> keys = jedis.keys("*");
for (String str: keys) {
System.out.println(str);
}
}
//操作List
@Test
public void demo2(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
jedis.lpush("key1","lucy","mary","jack");
List<String> key = jedis.lrange("key1", 0, -1);
System.out.println(key);
Set<String> keys = jedis.keys("*");
for (String str: keys) {
System.out.println(str);
}
}
//操作key,String
@Test
public void demo1(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.***.***",6379);
//添加
jedis.set("name","lucy");
//获取
String name = jedis.get("name");
System.out.println(name);
//设置多个key-value
jedis.mset("k1","v1","k2","v2");
List<String> mget = jedis.mget("k1", "k2");
System.out.println(mget);
Set<String> keys = jedis.keys("*");
for (String str: keys) {
System.out.println(str);
}
}
案列:实现手机验证码功能
package com.zc.jedis;
import redis.clients.jedis.Jedis;
import java.util.Random;
public class PhoneCode {
public static void main(String[] args) {
//模拟验证码发送
verfyCode("186");
//测试验证码校验
//getRedisCode("186","933938");
}
//3验证码校验
public static void getRedisCode(String phone,String code){
Jedis jedis = new Jedis("192.168.***.***",6379);
//获取key

本文介绍了SpringBoot如何整合Redis,包括手机验证码功能的实现、秒杀案例及存在的并发问题,如连接超时和超卖。同时,文章讨论了Redis实现的分布式锁及其常见问题,如锁自动释放可能导致的错误,并提出了解决方案,如使用Lua脚本确保原子性。
最低0.47元/天 解锁文章

1899

被折叠的 条评论
为什么被折叠?



