redis数据结构http://doc.redisfans.com/index.html

发布时间 2023-03-23 17:58:55作者: 濑川一线天

 

 

 

 

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匹配hellohallo) 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;

只要设计规范,内存、带宽才能优化;