Redis基础解释+安装教程+五大数据类型+Jedis验证码
-
Redis
-
Redis和Memcached的比较
-
-
-
在后台启动Redis
-
Redis默认有16个库
-
端口号6379
-
五大数据类型
-
五大数据类型
-
String:最基本的数据类型
-
get <key>:获取value
-
set <key> <value>:添加key-value
-
append <key><value>:往key中value追加值
-
strlen <key>:获取value长度
-
setnx <key><value> :只有在key不存在的时候设置key的值
-
incr<key>:将key中储存的数字值加1 +只能对数字值操作,如果为空,新增值为1
-
decr<key>:将key中储存的数字值减1 +只能对数字值操作,如果为空,新增值为-1
-
incrby/decrby <key> <步长>:将key中存储的数字值增减。自定义步长
-
示例:
-
List
-
lpush/rpush <key> <value>:左右插入
-
lpop/rpop <key> 值在键在,值亡键亡
-
rpoplpush <key1> <key2>:从<key1>列表右边吐出一个值,插到<key2>左边
-
lrange <key> <start><stop> 按照索引下标获得元素(从左到右)
-
lindex <key><index> 按照索引下标获得元素(从左到右)
-
获得列表长度:len <key>
-
linsert <key> before <value> <newvalue> 早value的前边插入新值
-
lrem <key> <n> <value>从左边删除n个value
-
set 去重
-
hash类型
-
zset
-
-
Java的Redis 客户端Jedis
-
作业
-
动态手机验证码
-
拼接向Redis中保存验证码的key
-
String codeKey=CondeConfig.PHONE_PREFIX+phoneNo+CondeConfig.PHONE_SUFFIX;
-
生成6位验证码
-
String code=getCode(6);
-
-
向手机号发送验证码
-
创建Jedis
-
Jedis jedis=new Jedis(host,port);
-
向Jedis中保存验证码,并设置有效时间为120秒
-
jedis.setex(codeKey,120,code);
-
-
给前端浏览器响应一个字符串true
-
response.getWriter().write("true");
-
-
关闭redis
-
redis.close();
-
-
-
-
补充功能
-
校验
-
在Redis中获取验证码用于校验
-
String codeKey=CondeConfig.PHONE_PREFIX+phoneNo+CondeConfig.PHONE_SUFFIX;
-
Jedis jedis=new Jedis(host,port);
-
String redisCode=jedis.get(codeKey);
-
判断用户输入的验证码从Redis的验证码是否一致
-
if(inputCode.equeals(redisCode))
-
{
-
将redis中保存的验证码清楚
-
jedis.del(codeKey);
-
验证码正确给浏览器响应true
-
response.getWriter().write("true");
-
-
}
-
jedis.close();
-
-
在SendCodeServlet中补充,每日最多发送3次的功能
-
//拼接一个计数器的key'
-
String countKey=CondeConfig.PHONE_PREFIX+phoneNo+CondeConfig.COUNT_SUFFIX;
-
String count=jedis.get(countKey);
-
if(count==null)
-
第一次发送验证码,此时向Redis中保存计数器的值是1,并设置有效时间为24小时
-
{
-
jedis.setex(countKey,60*60*24,1);
-
-
-
-
}
-
else if("3".equals(jedis.get(countKey)))
-
{
-
response.getWriter().write("limit");
-
关闭jedis
-
jedis.close();
-
return;
-
}
-
else {
-
jedis.incr(countKey);
-
-
}
-
-
-
-