redis常用api
一、全局命令
1.keys * //查看所有键
2.dbsize //键总数,如果存在大量键,线上禁止使用此命令
3.exists key //存在返回1,不存在返回0
4.del key //删除键, 返回删除键个数,删除不存在键返回0
5.expire key seconds //键过期,set name test expire name 10 //10秒过期
6.ttl key //查看剩余的过期时间
7.type key //键的数据结构类型,键不存在返回none
二、字符串string
实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB
1.set age 20 ex 20 //设值命令,10秒后过期 px 10000 毫秒过期
2.setnx name test //不存在键name时,返回1设置成功;存在的话失败0,可以使用该命令做分布式锁
3.get key //获值命令,存在则返回value, 不存在返回nil
4.mset country china city guangzhou //批量设值
5.mget country city //批量获值
6.incr age //自增,必须为整数自加1,非整数返回错误,无age键从0自增返回1
7.decr age //整数age减1
8.incrby age 2 //age + 2
9.decrby age 2 //age - 2
10.incrbyfloat score 1.1 //浮点型 score + 1.1
11. append key //追加命令,set name chen;append name db;追加后成chendb
12.str key //字符串长度,每个中文占3个字节
13.getrange key start stop //截取字符串,set name helloworld;getrange 2 4;返回llo
14.object encoding key //内部编码,int:8字节长整理;embstr:小于等于39字节串; raw:大于39字节的字符串
三、哈希hash
内部编码有两种:ziplist和hashtable,当field少的时候或者value小于64字节,使用ziplist,否则hashtable;每个hash可以存储232 - 1个键值对
1.hset key field value //设值,hset user:1 name chendb,成功返回1,失败返回0
2.hget key field //取值,hget user:1 name ,返回chendb
3.del key field //删值,del user:1 name ,返回删除的个数
4.hlen key //计算个数,hset user:1 name chendb;hset user:1 age 26;hlen user:1;返回2
5.hmset key field value [field value] //批量设值,hmset user:2 name chendb age 26 sex 男
6.hmget key field [field] //批量取值,hmget user:2 name age sex
7.hexists key field //判断field是否存在,存在返回1不存在返回0
8.hkeys key //获取所有field,hkeys user:2;返回name age sex
9.hvals key //获取所有值,hvals user:2;返回 chendb 26 男
10.hgetall key //获取所有field和value,返回 name chendb age 26 sex 男
11.hincrby key field 1 //值加1,hincrby user:2 age 1;age + 1
12:hincrbyfloat key value //浮点型加
四、列表list
3.2版本之后,列表只有quicklist内部编码,3.2版本之前分为ziplist,linkedlist
1.rpush user:1 c b a //从右向左插入cba
2.lrange user:1 0 -1 //从左到右获取列表所有元素,返回cba
3.lpush user:2 c b a //从左向右插入cba
4.linsert user:2 before b teacher //在b之前插入teacher
5.lindex user:1 -1 //返回最末尾a,-2返回b
6.llen user:1 //返回当前列表长度
7.lpop user:1 //把最左的第一个元素c删除
8.rpop user:1 //把最右的元素a删除
9.lrem key count value //删除指定元素,count代表删除多少个,不足的删完,
如key中只有4个b,count为5,则将全部的b删除
10.ltrim key1 3 //保留第二到第四个元素,其余全部删除
11.lset user1 2 java //将第三个元素替换成java
五、集合set
当元素少于512个且都为整数是,内部编码为intset,否则为hashtable
1.exists key //检查键是否存在
2.sadd user a b c //添加3个元素,元素不能重复,重复无效
3.smembers user //获取user的所有元素,返回结果无效
4.srem user a //删除元素a,不存在返回1
5.scard user //计算元素个数
6.sismember user a //判断元素在集合是否存在,存在返回1,不存在返回0
7.srandmember user 2 //随机返回2个元素
8.spop user 2 //随机返回2个元素并从集合删除
9.sinter user:1 user:2 //求两集合的交集
10.sunion user:1 user:2 //求两集合的并集
11.sdiff user:1 user2 //求两个集合的差集
12.sinterstore user_1 user:1 user:2 //将两个集合的交集保存到user_1中
12.sunionstore user_2 user:1 user:2 //将两个集合的并集保存到user_2中
12.sdiffstore user_3user:1 user:2 //将两个集合的差集保存到user_3中
六、有序集合
元素个数小于128个,元素值小于64字节时,使用ziplist,否则使用skiplist
1.zadd user:zan 200 user:1 // 为key为user:zan的元素user:1赋值200,返回操作成功的条数1
2.zadd user:zan 200 user:1 100 user:2 30 user:3 //返回3
3.zadd test:1 nx 100 user:1 //键test:1必须不存在,主要用于添加
4.zadd test:1 xx incr 200 user:1 //键test:1必须存在,主要用于修改
5.zrange test:1 0 -1 withscores //查看数值和成员名
6.zcard test:1 //计算成员个数
7.zcore key member//查看数值
8.zrank key member//返回名次,从0开始
9.zrevrank key member//倒序,分值越高,排名越靠前
10.zrem key member [member...] //删除成员
11.zincrby key increment member//分值增加
12.zadd key xx incr increment member//分值增加
13.zrange key start stop withscores //指定排名范围的分数和成员
14.zrevrange key start stop withscores //倒序
15.zrangebyscore key min max withscores //返回指定值范围的分数和成员
16.zrevrangebyscore key min max withscores //返回指定值范围的分数和成员,倒序
17.zrangebyscore key (120 +inf withscores //120到无限大
18.zrevrangebyscore key (110 -inf withscores //无限小到110
19.zcount key 110 300 //返回110 到300范围的成员个数
20.zremrangebyrank key 0 1 //删除指定排名内的升序元素
21.zremrangebyscore key 100 300 //删除值在100到300范围内的成员
22.zremrangebyscore key (100 +inf //删除值大于100(不包括100)的成员
23.有序集合的交集
zinterstore destination numkeys key ... [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
destination:交集产生新的元素存储键名称
numkeys: 要做交集计算的键个数
key :元素键值
weights:每个被选中的键对应值乘weight, 默认为1
初始化数据:
zadd user:7 1 james 2 mike 4 jack 5 kate //初始化user:7数据
zadd user:8 3 james 4 mike 4 lucy 2 lee 6 jim //初始化user:8数据
交集例子
zinterstore user_jj 2 user:7 user:8 aggregate sum //2代表键合并个数,
//aggregate sum可加也不可加上,因为默认是sum
//结果user_jj:4james(1+3), 6mike(2+4)
zinterstore user_jjmax 2 user:7 user:8 aggregate max 或min
//取交集最大的分数,返回结果 3james 4mike, min取最小
weights:
zinterstore user_jjweight 2 user:7 user:8 weights 8 4 aggregate max
//1,取两个成员相同的交集,user:7->1 james 2 mike; user:8->3 james 4 mike
//2,将user:7->james 1*8=8, user:7->mike 2*8 =16,
最后user:7结果 8 james 16 mike;
//3,将user:8-> james 3*4=12, user:8->mike 4*4=16
最后user:8结果12 james 16 mike
//4,最终相乘后的结果,取最大值为 12 james 16mike
//5, zrange user_jjweight 0 -1 withscores 查询结果为 12 james 16mike
总结:将user:7成员值乘8,将user:8成员值乘4,取交集,取最大
24.有序集合并集
格式:zunionstore destination numkeys key ... [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
destination:交集产生新的元素存储键名称
numkeys: 要做交集计算的键个数
key :元素键值
weights:每个被选中的键对应值乘weight, 默认为1
例子:
zunionstore user_jjweight2 2 user:7 user:8 weights 8 4 aggregate max
redis常用api的更多相关文章
- Redis数据结构和常用API
Redis是一个速度非常快的非关系型数据库,可以存储键与5中不同数据结构类型之间的映射.这5种数据结构分别是STRING(字符串).LIST(列表).SET(集合).HASH(散列).ZSET(有序集 ...
- php版redis插件,SSDB数据库,增强型的Redis管理api实例
php版redis插件,SSDB数据库,增强型的Redis管理api实例 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储.另外,ro ...
- Redis中7种集合类型应用场景&redis常用命令
Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...
- Redis常用API-使用文档
一.Redis Client介绍 1.1.简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用. Jedis源码工程地址:https://g ...
- redis常用的命令总结
redis常用的命令大全 1.基于内存的key-value数据库 2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次 3.支持数据持久化 4.value可以 ...
- jedis常用API
一.Redis Client介绍 1.1.简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用. Jedis源码工程地址:https://g ...
- Jedis 常用API使用
使用Jedis操作Redis常用的API <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <depen ...
- Redis常用数据类型及各种数据类型应用和实现方式
Redis常用数据类型: StringHashListSetSorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Red ...
- redis常用命令-2
redis常用命令 type your_key #查看Key类型 del your_key #删除key keys * #所有key info #信息 /usr/local/bin/redis-cli ...
随机推荐
- Qt configure 参数
在编译QT前,可加各种参数来定制自己想要的QT库.这对需要裁减QT库的朋友来说非常重要.对于如何编译QT,可以参考:http://hi.baidu.com/agassi%5Fp/blog/item/4 ...
- ArcGIS超级工具SPTOOLS-MXD操作篇
1.1 MXD批量裁剪 操作视频:https://weibo.com/tv/v/Hy7P6bF7d?fid=1034:4381332084881258 把当前窗口的MXD,按某个图层的某个字段批量裁 ...
- ILI9341液晶显示
17.1液晶显示原理 TFT-LCD(Thin Film Transistor Liquid Crystal Display)即薄膜晶体管液晶显示器,是微电子技术与液晶显示器技术巧妙结合的的一种技术. ...
- Qt编写安防视频监控系统7-全屏切换
一.前言 全屏切换这个功能点属于简单的,一般会做到右键菜单中,也提供了快捷键比如alt+enter来触发,恢复全屏则按esc即可,全屏处理基本上都是隐藏通道面板以外的窗体,保持最大化展示,由于采用了模 ...
- Docker save and load,镜像保存
一.起因 docker pull 时发生错误 error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/r ...
- 使用XCode7打包动态库(Framework)
iOS中的静态库和动态库 概念 静态库(Static Library)以 .a 为后缀,它是你的源码的实现.m文件编译而成的二进制文件集合,需要配合上暴漏的.h文件使用,它在引用链接时拷贝至可执行文件 ...
- mysql查看数据库所占用的空间
查询某个表所占用的磁盘空间大小: SELECT CONCAT(ROUND(SUM(data_length/1024/1024),2),'MB') AS data_length_MB, CONCAT(R ...
- MySQL创建用户、授权、删除
1.在MySQL中创建新用户 使用具有shell访问权限的root用户登录MySQL服务器并创建名为“rahul”的新用户.下面的命令只允许从localhost系统访问用户rahul的MySQL服务器 ...
- 图像欧拉数计算 matlab实现
EUL = C - H 其中EUL表示欧拉数 C表示对象数 H表示孔洞数 欧拉数常用来识别数字: 识别数字 8 ,8 的欧拉数为 -1 ,不同于0,1,2,3,4,5,6,7,9 close all ...
- CImage 和 CvvImage 命名空间问题
[问题:名称CImage同时在两个库中出现] 1.出现: ATL #include <atlimage.h> OpenCv #include <highgui.h> #defi ...