1. Jedis所需要的jar包

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>3.2.0</version>
  5. </dependency>

2. 连接Redis注意事项

禁用Linux的防火墙:Linux(CentOS7)里执行命令
**systemctl stop/disable firewalld.service **
redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no

3. Jedis常用操作

3.1. 创建动态的工程

3.2. 创建测试程序

  1. package com.atguigu.jedis;
  2. import redis.clients.jedis.Jedis;
  3. public class Demo01 {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("192.168.137.3",6379);
  6. String pong = jedis.ping();
  7. System.out.println("连接成功:"+pong);
  8. jedis.close();
  9. }
  10. }

3.3. 测试相关数据类型

Jedis-API: Key

  1. jedis.set("k1", "v1");
  2. jedis.set("k2", "v2");
  3. jedis.set("k3", "v3");
  4. Set<String> keys = jedis.keys("*");
  5. System.out.println(keys.size());
  6. for (String key : keys) {
  7. System.out.println(key);
  8. }
  9. System.out.println(jedis.exists("k1"));
  10. System.out.println(jedis.ttl("k1"));
  11. System.out.println(jedis.get("k1"));

Jedis-API: String

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

Jedis-API: List

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


Jedis-API: set

  1. jedis.sadd("orders", "order01");
  2. jedis.sadd("orders", "order02");
  3. jedis.sadd("orders", "order03");
  4. jedis.sadd("orders", "order04");
  5. Set<String> smembers = jedis.smembers("orders");
  6. for (String order : smembers) {
  7. System.out.println(order);
  8. }
  9. jedis.srem("orders", "order02");


Jedis-API: hash

  1. jedis.hset("hash1","userName","lisi");
  2. System.out.println(jedis.hget("hash1","userName"));
  3. Map<String,String> map = new HashMap<String,String>();
  4. map.put("telphone","13810169999");
  5. map.put("address","atguigu");
  6. map.put("email","abc@163.com");
  7. jedis.hmset("hash2",map);
  8. List<String> result = jedis.hmget("hash2", "telphone","email");
  9. for (String element : result) {
  10. System.out.println(element);
  11. }


Jedis-API: zset

  1. jedis.zadd("zset01", 100d, "z3");
  2. jedis.zadd("zset01", 90d, "l4");
  3. jedis.zadd("zset01", 80d, "w5");
  4. jedis.zadd("zset01", 70d, "z6");
  5. Set<String> zrange = jedis.zrange("zset01", 0, -1);
  6. for (String e : zrange) {
  7. System.out.println(e);
  8. }

4.RedisJedis实例

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

分析
image.png

代码

  1. package com.yuanzi.jedis;
  2. import java.util.Random;
  3. import redis.clients.jedis.Jedis;
  4. public class PhoneCode {
  5. public static void main(String[] args) {
  6. System.out.println(getCode());
  7. verifyCode("13712345678");
  8. getRedisCode("13712345678","101249");
  9. }
  10. //3.验证码效验
  11. public static void getRedisCode(String phone,String code){
  12. Jedis jedis = new Jedis("127.0.0.1", 6379);
  13. String codeKey = "VerifyCode" + phone + ":code";
  14. String redisCode = jedis.get(codeKey);
  15. if (redisCode.equals(code)){
  16. System.out.println("成功");
  17. }else {
  18. System.out.println("失败");
  19. }
  20. jedis.close();
  21. }
  22. //2. 每个手机每天只能发送三次, 验证码放到redis中, 设置过期时间
  23. public static void verifyCode(String phone){
  24. //连接redis
  25. Jedis jedis = new Jedis("127.0.0.1", 6039);
  26. //拼接key
  27. String countKey = "VerifyCode" + phone + ":count";
  28. //验证码key
  29. String codeKey = "VerifyCode" + phone + ":code";
  30. //每个手机每天只能发送三次
  31. String count = jedis.get(codeKey);
  32. if (count == null){
  33. //没有发送次数,第一次发送
  34. //设置发送次数是1
  35. jedis.setex(countKey, 24*60*60,"1");
  36. }if (Integer.parseInt(count) <=2){
  37. //发送次数+1
  38. jedis.incr(countKey);
  39. }else {
  40. System.out.println("今天的发送次数不能大于3次");
  41. jedis.close();
  42. }
  43. //发送验证码放到redis中
  44. String vcode = getCode();
  45. jedis.setex(codeKey,120,vcode);
  46. jedis.close();
  47. }
  48. //1.生成6位的验证码
  49. public static String getCode(){
  50. Random random = new Random();
  51. String code = "";
  52. for (int i = 0; i < 6; i++) {
  53. int rand = random.nextInt(10);
  54. code += rand;
  55. }
  56. return code;
  57. }
  58. }