flushdb刷新数据库,达到清空key的效果
redis有16个库,按照下标区分,默认是0;切换select 下标
redis集群只认db0;其他数据库是被抛弃的。
什么是阻塞?
如果所有给定 key 都不存在或包含空列表,那么 BLPOP 命令将阻塞连接,直到等待超时,或有另一个客户端对给定 key 的任意一个执行 LPUSH 或 RPUSH 命令为止。
非阻塞能够很快返回结果。
set覆盖之前的值,返回最新的值
TTL设置key值的过期的时间,ex默认过期时间单位是秒
nil失败ok成功;失败0成功1;key:一直存在-1;不存在-2
string:SETNX SETEX INCR【increment(数字计算)功能:永远加1】 INCRBY【incr默认加1,incrby设置加值】DECR DECRBY【减少】
string:set、get、append、strlen、incr、incrby、decr、decrby、mset、mget
key:dbsize(key的数量)persist(移除)rondomkey(随即返回一个key 应用场景:判断redis是否存活)
keys【设置过期时间】( * 匹配数据库中所有 key;h[ae]llo匹配hello和hallo) ttl(存活时间)type(返回的类型) scan(应用场景:模糊匹配)
hash:hset 大key 小key value;hget 大key 小key;hkeys返回所有的Key;hvals返回所有的values;hgetall(查询所有的域和值);hget、hmset、hgetall的区别见下图
list:lset将列表 key 下标为 index 的元素的值设置为 value 。当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误,对同一个下标操作会覆盖原值,见下图;lpush(从左横上竖插入);rpush(从右横下竖增加);lpop(左弹出 移除并返回列表 key 的头元素);lset;ltrim;rpoplpush(左推右弹 循环列表、安全的队列);blpop(b阻塞l左弹 观察者模式(一有值就显示));lpush和lpushx的区别见下图;lrange【redis的作者讲链式转换成环形。】
set(核心交并集)无序唯一去重:sadd(可添加多个元素);sdiff 返回第一个key独有的差(补)集见下图。sinter返回key的交集。sunion(并集);sdiffstore【应用场景:可能还认识?朋友圈可见】;spop移除并返回集合一个随机元素【应用场景:抽奖】;smembers(返回集合内的所有成员);scard返回指定集合元素数量,集合不存在返回0;
zset(核心排序)有序唯一去重:zcount没有环形结构,-1会报0见下图;zrevrank(rev反转 倒序。值最大为0。查排序值)zrevrange(从大到小。0 -1从头到尾从大到小排序);score查值;zrem(移除)
spring脚本:eval:用来保证多个redis原生命令的原子性。redis.call()和redis.pcall()区别在于异常错误返回信息不同。eval脚本下标从1开始
eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
STELEN返回字符串长度 APPEND【末尾追加字符串】
189:文章 score:排名
二维码:大key:身份证号;小key:最近7天内生活是的城市cities;健康码status;姓名name;
只要设计规范,内存、带宽才能优化;