ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis学习(三)之Jedis操作CRUD

2022-06-22 14:37:07  阅读:170  来源: 互联网

标签:redis CRUD System Jedis key println jedis out


使用Jedis进行测试

1.创建Maven项目

2.添加pom.xml文件

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>

3.创建一个包com.lianxi.Jedis文件夹和创建一个JedisDemo01的java类

4.测试连接rerdis

  /**
     * 连接Redis
     */
    @Test
    public void initCount() {
        // 创建Jedis对象,连接Redis服务器
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        // 设置认证密码
//        jedis.auth("root");
        // 指定数据库
        jedis.select(0);
        // 使用ping命令,测试是否连接成功
        String result = jedis.ping();
        System.out.println(result);
    }

Jeids API的操作

/**
 * Jeids API的操作
 * @author pan_junbiao
 */
@Test
public void jedisAPITest()
{
    //创建Jedis实例,连接本地Redis服务
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    //设置Redis数据库的密码
    System.out.println(jedis.auth("123456"));
    //获取客户端信息
    System.out.println(jedis.getClient());
    //清空Redis数据库,相当于执行FLUSHALL命令
    System.out.println(jedis.flushAll());
    //查看Redis信息,相当于执行INFO命令
    System.out.println(jedis.info());
    //获取数据库中key的数量,相当于指定DBSIZE命令
    System.out.println(jedis.dbSize());
    //获取数据库名字
    System.out.println(jedis.getDB());
    //返回当前Redis服务器的时间,相当于执行TIME命令
    System.out.println(jedis.time());
}

Jedis-Api: key

jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");

Set<String> keys = jedis.keys("*");
System.out.println(keys.size());

for (String key : keys) {
	System.out.println(key);
}

System.out.println(jedis.exists("k1"));
System.out.println(jedis.ttl("k1"));                
System.out.println(jedis.get("k1"));

 Jedis-API:String

jedis.mset("str1","v1","str2","v2","str3","v3");
System.out.println(jedis.mget("str1","str2","str3")); 

Jedis-API:list

List<String> list = jedis.lrange("mylist",0,-1);
for (String element : list) {
	System.out.println(element);
}

Jedis-API:set

jedis.sadd("orders", "order01");
jedis.sadd("orders", "order02");
jedis.sadd("orders", "order03");
jedis.sadd("orders", "order04");

Set<String> smembers = jedis.smembers("orders");

for (String order : smembers) {
	System.out.println(order);
}

jedis.srem("orders", "order02");

 Jedis-API:hash

jedis.hset("hash1","userName","lisi");
System.out.println(jedis.hget("hash1","userName"));

Map<String,String> map = new HashMap<String,String>();
map.put("telphone","13810169999");
map.put("address","atguigu");
map.put("email","abc@163.com");

jedis.hmset("hash2",map);

List<String> result = jedis.hmget("hash2", "telphone","email");

for (String element : result) {
	System.out.println(element);
}

 Jedis-API:zset

jedis.zadd("zset01", 100d, "z3");
jedis.zadd("zset01", 90d, "l4");
jedis.zadd("zset01", 80d, "w5");
jedis.zadd("zset01", 70d, "z6");
 
Set<String> zrange = jedis.zrange("zset01", 0, -1);

for (String e : zrange) {
	System.out.println(e);
}

示例1:

import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JedisDemo01 {
    public static void main(String[] args) {
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //测试
        String ping = jedis.ping();
        System.out.println(ping);
    }

    @Test
    void KeyString(){
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        //添加
        jedis.set("name","qianling");
        //获取
        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 key : keys) {
            System.out.println(key);
        }
    }

    //操作list
    @Test
    void List(){
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        List<String> list = jedis.lrange("mylist",0,-1);
        for (String element : list) {
            System.out.println(element);
        }
    }

    //操作set
    @Test
    void set(){
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.sadd("orders", "order01");
        jedis.sadd("orders", "order02");
        jedis.sadd("orders", "order03");
        jedis.sadd("orders", "order04");

        Set<String> smembers = jedis.smembers("orders");

        for (String order : smembers) {
            System.out.println(order);
        }

        jedis.srem("orders", "order02");
    }


    //操作hash
    @Test
    void hash(){
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.hset("hash1","userName","lisi");
        System.out.println(jedis.hget("hash1","userName"));

        Map<String,String> map = new HashMap<String,String>();
        map.put("telphone","13810169999");
        map.put("address","atguigu");
        map.put("email","abc@163.com");

        jedis.hmset("hash2",map);

        List<String> result = jedis.hmget("hash2", "telphone","email");

        for (String element : result) {
            System.out.println(element);
        }
    }

    //操作zset
    @Test
    void zset(){
        //创建Jedis对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.zadd("zset01", 100d, "z3");
        jedis.zadd("zset01", 90d, "l4");
        jedis.zadd("zset01", 80d, "w5");
        jedis.zadd("zset01", 70d, "z6");

        Set<String> zrange = jedis.zrange("zset01", 0, -1);

        for (String e : zrange) {
            System.out.println(e);
        }
    }
}

示例2:

key+String
/**
 * 获取Reids连接
 * @author pan_junbiao
 */
public Jedis getJedis()
{
    //连接Redis服务器
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    System.out.println("Redis服务器连接成功!");
    return jedis;
}
/**
 * Reids的Key类型
 * @author pan_junbiao
 */
@Test
public void redisKey()
{
    Jedis jedis = getJedis();
    jedis.set("myKey", "pan_junbiao的博客");
    System.out.println("判断键为myKey的值是否存在:" + jedis.exists("myKey"));
    System.out.println("获取键为myKey的值:" + jedis.get("myKey"));
    System.out.println("查看键为myKey的类型:" + jedis.type("myKey"));
    System.out.println("随机获取一个Key:" + jedis.randomKey());
    System.out.println("将键myKey重命名为myKey1:" + jedis.rename("myKey", "myKey1"));
    System.out.println("删除键为myKey1:" + jedis.del("myKey1"));
}
/**
 * Reids的String类型
 * @author pan_junbiao
 */
@Test
public void redisString()
{
    Jedis jedis = getJedis();
    System.out.println("设置userName:" + jedis.set("userName", "pan_junbiao的博客"));
    System.out.println("设置blogUrl:" + jedis.set("blogUrl", "https://blog.csdn.net/pan_junbiao"));
    System.out.println("设置blogRemark:" + jedis.set("blogRemark", "您好,欢迎访问 pan_junbiao的博客"));
    System.out.println("用户名称:" + jedis.get("userName"));
    System.out.println("博客地址:" + jedis.get("blogUrl"));
    System.out.println("博客信息:" + jedis.get("blogRemark"));
    System.out.println("设置userName,如果存在返回0:" + jedis.setnx("userName", "pan_junbiao的博客"));
    System.out.println("设置userName2:" + jedis.set("userName2", "pan_junbiao"));
    System.out.println("获取key为userName和userName2的值:"+jedis.mget("userName","userName2"));
    System.out.println("自增1:" + jedis.incr("index"));
    System.out.println("自增1:" + jedis.incr("index"));
    System.out.println("自增2:" + jedis.incrBy("count",2));
    System.out.println("自增2:" + jedis.incrBy("count",2));
    System.out.println("递减1:" + jedis.decr("count"));
    System.out.println("递减2:" + jedis.decrBy("count",2));
    System.out.println("在userName2后面添加String:" + jedis.append("userName2","的博客"));
    System.out.println("获取key为userName2的值:" + jedis.get("userName2"));
}
list
/**
 * Reids的List类型
 * @author pan_junbiao
 */
@Test
public void redisList()
{
    Jedis jedis = getJedis();
    //在列表的尾部添加数据
    jedis.rpush("userList", "pan_junbiao的博客", "https://blog.csdn.net/pan_junbiao", "pan_junbiao的博客", "深圳市");
    //返回列表长度
    System.out.println("列表长度:" + jedis.llen("userList"));
    //移除一个元素
    System.out.println("移除一个元素:" + jedis.lrem("userList", 1, "深圳市"));
    //修改值
    System.out.println("修改元素值:" + jedis.lset("userList", 2, "您好,欢迎访问 pan_junbiao的博客"));
    //取值
    List<String> list = jedis.lrange("userList", 0, -1);
    for (String str : list)
    {
        System.out.println(str);
    }
    //删除列表
    System.out.println("删除列表:" + jedis.del("userList"));
}
set
/**
 * Reids的Set类型
 * @author pan_junbiao
 */
@Test
public void redisSet()
{
    Jedis jedis = getJedis();
    jedis.sadd("city", "北京", "上海", "广州", "深圳", "昆明", "武汉", "大理");
    System.out.println("移除并返回集合中的一个随机元素:" + jedis.spop("city"));
    System.out.println("随机取出一个值:" + jedis.srandmember("city"));
    //移除集合中的一个或多个成员元素
    System.out.println("移除集合元素:" + jedis.srem("city", "北京"));
    //返回集合中所有元素
    System.out.println(jedis.smembers("city"));
    //判断元素是否存在
    System.out.println("判断深圳是否存在集合中:" + jedis.sismember("city","深圳"));
    //返回集合中元素的数量
    System.out.println("集合中元素的数量:" + jedis.scard("city"));
    jedis.sadd("city2","昆明","香港","澳门","台湾","上海","北京","成都");
    System.out.println("交集:" + jedis.sinter("city","city2"));
    System.out.println("并集:" + jedis.sunion("city","city2"));
    System.out.println("差集:" + jedis.sdiff("city","city2"));
}
zset
/**
 * Reids的有序集合(Sorted Set)类型
 * @author pan_junbiao
 */
@Test
public void redisSortedSet()
{
    Jedis jedis = getJedis();
    jedis.zadd("math-score", 100, "pan_junbiao的博客_01");
    jedis.zadd("math-score", 82, "pan_junbiao的博客_02");
    jedis.zadd("math-score", 80, "pan_junbiao的博客_03");
    jedis.zadd("math-score", 55, "pan_junbiao的博客_04");
    //为分数值加上增量
    System.out.println(jedis.zincrby("math-score", 15, "pan_junbiao的博客_03"));
    System.out.println(jedis.zincrby("math-score", -5, "pan_junbiao的博客_04"));
    //返回有序集合中指定区间分数的成员数
    System.out.println("分数在90至100的人数:" + jedis.zcount("math-score", 90, 100));
    //获取在指定区间内的元素(升序)
    Set<String> ascSet = jedis.zrange("math-score",0,-1);
    System.out.println("分数排名(从低到高):");
    for(String str : ascSet)
    {
        System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
    }
    //获取在指定区间内的元素(降序)
    Set<String> descSet = jedis.zrevrange("math-score",0,-1);
    System.out.println("分数排名(从高到低):");
    for(String str : descSet)
    {
        System.out.println("用户名称:" + str + " 分数:" + jedis.zscore("math-score",str));
    }
}
hash 
/**
 * Reids的哈希(Hash)类型
 * @author pan_junbiao
 */
@Test
public void redisMap()
{
    Jedis jedis = getJedis();
    Map<String,String> map = new HashMap<String,String>();
    map.put("userName","pan_junbiao的博客");
    map.put("blogUrl","https://blog.csdn.net/pan_junbiao");
    map.put("blogRemark","您好,欢迎访问 pan_junbiao的博客");
    map.put("city","深圳");
    jedis.hmset("userInfo",map);
    //删除map中的某个键值
    System.out.println("删除map中的某个键值:" + jedis.hdel("userInfo","city"));
    //判断指定键值是否存在
    System.out.println("判断指定键是否存在:" + jedis.exists("userInfo"));
    //返回map对象中的所有key
    System.out.println("返回map对象中的所有key:" + jedis.hkeys("userInfo"));
    //返回map对象中的所有value
    List<String> list = jedis.hvals("userInfo");
    for (String str : list)
    {
        System.out.println(str);
    }
}

示例3:

String+key
/**
     * 使用jedis的基本操作
     */
    private static void opsBase(Jedis jedis) {
        System.out.println("向redis中设置一个key " + jedis.set("key1", "value1"));
        System.out.println("向redis中设置一个key " + jedis.set("key2", "value2"));

        System.out.println("选择redis的一个数据库 " + jedis.select(0));
        System.out.println("查看当前数据库的大小 " + jedis.dbSize());
        System.out.println("查看redis中所有的key " + jedis.keys("*"));
        System.out.println("查看某个键对应值的数据类型 " + jedis.type("key1"));
        System.out.println("判断redis中是否存在一个key " + jedis.exists("key1"));
        System.out.println("设置redis中的一个key的过期时间 " + jedis.expire("key1", 10));
        System.out.println("查看redis中的这个key还有多长时间过期 " + jedis.ttl("key1"));
        System.out.println("删除redis中的一个键值对 " + jedis.del("key1"));
        System.out.println("清空当前的数据库 " + jedis.flushDB());
        System.out.println("清空所有的数据库 " + jedis.flushAll());
        System.out.println("将当前的数据库的一个键值对移动到另外一个数据库 " + jedis.move("key2", 1));
    }

    /**
     * 使用jedis操作string类型的数据
     */
    private static void opsString(Jedis jedis) {
        System.out.println("向redis中设置一个key " + jedis.set("key1", "value1"));
        System.out.println("只有当key不存在的时候再向redis中设置 " + jedis.setnx("key1", "value2"));
        System.out.println("向redis中设置一个key并设置过期时间 " + jedis.setex("key2", 10, "value2"));
        System.out.println("向redis中的某个key的值追加字符串 " + jedis.append("key1", "2"));
        System.out.println("获取redis中某个key对应的值 " + jedis.get("key1"));
        System.out.println("返回redis中某个key对应的值的长度大小 " + jedis.strlen("key1"));
        System.out.println("使用某个字符串从指定开始位置覆盖key对应的值到相同长度 " + jedis.setrange("key1", 0, "yh"));
        System.out.println("获取指定索引区间的字符串 " + jedis.getrange("key1", 0, 1));
        System.out.println("批量设置key和value " + jedis.mset("key3", "value3", "key4", "value4", "key5", "1"));
        System.out.println("批量获取redis中的值 " + jedis.mget("key3", "key4", "key5"));
        System.out.println("将redis中key对应的值加一 " + jedis.incr("key5"));
        System.out.println("将redis中key对应的值加指定的步长 " + jedis.incrBy("key5", 2));
        System.out.println("将redis中key对应的值减一 " + jedis.decr("key5"));
        System.out.println("将redis中key对应的值减指定的步长  " + jedis.decrBy("key5", 2));
    }
list
/**
     * 使用jedis操作list类型的数据
     */
    private static void opsList(Jedis jedis) {
        System.out.println("从左边向集合中添加元素 " + jedis.lpush("list1", "value1"));
        System.out.println("从右边向集合中添加元素 " + jedis.rpush("list1", "value2"));
        System.out.println("从集合的左边弹出一个元素 " + jedis.lpop("list1"));
        System.out.println("从集合的右边弹出一个元素 " + jedis.rpop("list1"));
        System.out.println("从左边向集合中添加元素 " + jedis.lpush("list1", "value1"));
        System.out.println("从右边向集合中添加元素 " + jedis.rpush("list1", "value2"));
        System.out.println("查看集合中元素的数量 " + jedis.llen("list1"));
        System.out.println("覆盖集合中指定位置的key的值 " + jedis.lset("list1", 0, "value"));
        System.out.println("从后往前删除两个集合中指定值的元素 " + jedis.lrem("list1", -2, "value2"));
        System.out.println("获取集合中指定下标的元素 " + jedis.lindex("list1", 0));
        System.out.println("在制定元素之前或者之后插入一个元素" + jedis.linsert("list1", BinaryClient.LIST_POSITION.BEFORE, "value", "before"));
        System.out.println("列举集合中的所有元素 " + jedis.lrange("list1", 0, -1));
    }
hash
/**
     * 使用jedis操作hash类型的数据
     */
    private static void opsHash(Jedis jedis) {
        System.out.println("向redis中的key对应的map中put一个值 " + jedis.hset("map1", "key1", "value1"));
        System.out.println("向redis中的key对应的map中put多个值 " + jedis.hmset("map1", new HashMap<String,String>(8) {
            {
                this.put("key2", "value2");
                this.put("key3", "value3");
                this.put("key4", "1");
            }
        }));
        System.out.println("获取redis中key对应map的某个值 " + jedis.hget("map1", "key1"));
        System.out.println("获取redis中key对应map的多个值 " + jedis.hmget("map1", "key1", "key2"));
        System.out.println("获取redis中key对应map的键值对数量 " + jedis.hlen("map1"));
        System.out.println("获取redis中key对应map的所有的key的value的值 " + jedis.hgetAll("map1"));
        System.out.println("获取redis中key对应map的所有的键 " + jedis.hkeys("map1"));
        System.out.println("获取redis中key对应map的所有的值 " + jedis.hvals("map1"));
        System.out.println("如果map对应的key不存在才设置 " + jedis.hsetnx("map1","key4", "2"));
        System.out.println("给map中的某个key对应的值增长对应的值 " + jedis.hincrBy("map1", "key4", 2));
    }
set和zset
/**
     * 使用jedis操作set类型的数据
     */
    private static void opsSet(Jedis jedis) {
        System.out.println("向set中添加一个或多个元素 " + jedis.sadd("set1", "value1", "value2", "value3", "value4", "value5", "value6"));
        System.out.println("获得set中的元素个数 " + jedis.scard("set1"));
        System.out.println("判断set中是否存在某个元素 " + jedis.sismember("set1", "value1"));
        System.out.println("获得set中的所有元素 " + jedis.smembers("set1"));
        System.out.println("删除set中的一个或者多个元素 " + jedis.srem("set1", "value5", "value6"));
        System.out.println("随机弹出set中的某个元素 " + jedis.spop("set1"));

        System.out.println("向set中添加一个或多个元素 " + jedis.sadd("set2", "value1", "value2"));

        System.out.println("获得两个set的差集 " + jedis.sdiff("set1", "set2"));
        System.out.println("获得两个set的差集并转储到另外一个set中 " + jedis.sdiffstore("set3", "set1", "set2"));
        System.out.println("获得两个set的交集 " + jedis.sinter("set1", "set2"));
        System.out.println("获得两个set的交集并转储到另外一个set中 " + jedis.sinterstore("set3", "set1", "set2"));
        System.out.println("获得两个set的并集 " + jedis.sunion("set1", "set2"));
        System.out.println("获得两个set的并集并转储到另外一个set中 " + jedis.sunionstore("set3", "set1", "set2"));
        System.out.println("获得set中的所有元素 " + jedis.smembers("set3"));
    }

    /**
     * 使用jedis操作zset类型的数据
     * 带分数输出值的时候返回的是字节数组
     */
    private static void opsSortedSet(Jedis jedis) {
        System.out.println("向zset中添加一个元素 " + jedis.zadd("sortedSet1",10,"value"));
        System.out.println("向zset中添加多个元素 " + jedis.zadd("sortedSet1", new HashMap<String, Double>(8) {
            {
                this.put("value1", 20D);
                this.put("value2", 30D);
                this.put("value3", 40D);
                this.put("value4", 50D);
            }
        }));
        System.out.println("统计zset中的元素个数 " + jedis.zcard("sortedSet1"));
        System.out.println("修改zset中某个元素的分数 " + jedis.zincrby("sortedSet1",-10D,"value"));
        System.out.println("删除zset中的一个或多个元素 " + jedis.zrem("sortedSet1", "value3", "value4"));
        System.out.println("正序获取zset中指定索引范围内的元素 " + jedis.zrange("sortedSet1", 0, -1));
        System.out.println("正序获取zset中指定索引范围内的元素及元素的分数" + jedis.zrangeWithScores("sortedSet1", 0, -1));
        System.out.println("正序获取zset中指定分数范围内的元素 " + jedis.zrangeByScore("sortedSet1", 0, 40));
        System.out.println("正序获取zset中指定分数范围内的元素及元素的分数" + jedis.zrangeWithScores("sortedSet1", 0, 40));
        System.out.println("逆序获取zset中指定索引范围内的元素 " + jedis.zrevrange("sortedSet1", 0, -1));
        System.out.println("逆序获取zset中指定索引范围内的元素及元素的分数" + jedis.zrevrangeWithScores("sortedSet1", 0, -1));
        System.out.println("逆序获取zset中指定分数范围内的元素 " + jedis.zrevrangeByScore("sortedSet1", 40, 0));
        System.out.println("逆序获取zset中指定分数范围内的元素及元素的分数" + jedis.zrevrangeByScoreWithScores("sortedSet1", 40, 0));
    }
Redis6新增3个数据类型
 /**
     * 使用jedis测试基数数据类型
     */
    private static void opsHyperLogLog(Jedis jedis) {
        System.out.println("向一个数据组中添加数据 " + jedis.pfadd("hyperLogLog", "a", "b", "c", "d", "e", "f", "a", "a", "b"));
        System.out.println("向一个数据组中添加数据 " + jedis.pfadd("hyperLogLog1", "a", "b", "c", "d"));
        jedis.pfmerge("hyperLogLog0","hyperLogLog", "hyperLogLog1");
        System.out.println("输出指定key的基数是多少 " + jedis.pfcount("hyperLogLog0"));
    }

    /**
     * 使用jedis操作geospatial类型的数据
     */
    private static void opsGeo(Jedis jedis) {
        System.out.println("向geo中添加地图位置信息 " + jedis.geoadd("geo1", 116.404269d, 39.91582d, "beijing"));
        System.out.println("向geo中添加地图位置信息 " + jedis.geoadd("geo1", 121.478799d, 31.235456d, "shanghai"));

        System.out.println("返回某几个地点的地理位置信息 " + jedis.geopos("geo1","beijing", "shanghai"));
        System.out.println("返回两个地点之间的直线距离 " + jedis.geodist("geo1", "beijing", "shanghai"));
        System.out.println("返回指定经纬度多少距离以内的元素 " + jedis.georadius("geo1", 116.404269d, 39.91582d,1500, GeoUnit.KM));
        System.out.println("返回指定元素多少距离以内的元素 " + jedis.georadiusByMember("geo1", "beijing",1500, GeoUnit.KM));
    }

    /**
     * 使用jedis操作bitmaps类型的数据
     */
    private static void opsBitMaps(Jedis jedis) {
        System.out.println("向bit中设置数据" + jedis.setbit("bit1",0,true));
        System.out.println("向bit中设置数据" + jedis.setbit("bit1",5,false));
        System.out.println("向bit中设置数据" + jedis.setbit("bit1",10,false));

        System.out.println("获取指定索引上的数字 " + jedis.getbit("bit1",4));
        System.out.println("返回bitmaps上共有多少true " + jedis.bitcount("bit1"));
    }
}

Jedis实例:手机验证码功能

要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次

代码展示:

import redis.clients.jedis.Jedis;

import java.util.Random;

public class PhoneCode {
    public static void main(String[] args) {
        //测试
//        String code = getCode();
//        System.out.println(code);


        //模拟验证码发送
        //verifyCode("137000000");
        
        //校验发送的验证码
        //getRedisCode("137000000","验证码");
    }

    //1.随即生成一个六位数的验证码
    public static String getCode(){
        Random random = new Random();
        String code = "";
        for (int i = 0; i < 6; i++) {
            int rand = random.nextInt(10);
            code += rand;
        }
        return code;
    }

    //2.每个手机每天只能发送三次,验证码放到redis中,设置过期时间120
    public static void verifyCode(String phone){
        //连接redis
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //输入redis连接密码
        //jedis.auth("root");

        //拼接key
        //手机发送次数key
        String countKey = "VerifyCode" + phone + ":count";
        //验证码key
        String codeKey = "VerifyCode" + phone + ":code";

        //每个手机每天只能发送3次
        String count = jedis.get(countKey);
        if (count == null){
            //没有发送次数,第一次发送
            //设置发送次数是1
            jedis.setex(countKey,24 * 60 * 60,"1");
        }else if (Integer.parseInt(count) <= 2){
            //发送次数+1
            jedis.incr(countKey);
        }else if (Integer.parseInt(count) > 2){
            //发送三次了,不能再发送了
            System.out.println("今天的发送次数已经超过3次了");
            //关闭连接
            jedis.close();
        }

        //发送的验证码要放到redis中,设置过期时间为120s
        String vcode = getCode();
        jedis.setex(codeKey,120,vcode);
        jedis.close();
    }

    //3.验证码校验
    public static void getRedisCode(String phone,String code){
        //从redis中获取验证码
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //jedis.auth("root");

        //验证码key
        String codeKey = "VerifyCode" + phone + ":code";
        String redisCode = jedis.get(codeKey);

        //判断
        if (redisCode.equals(code)){
            System.out.println("成功");
        }else {
            System.out.println("失败");
        }
        jedis.close();
    }
}

 

标签:redis,CRUD,System,Jedis,key,println,jedis,out
来源: https://www.cnblogs.com/aimangguo/p/16398565.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有