Redis API的使用与理解

一、Redis 基础:

  1、通用命令:

    keys [pattern]:

      keys *  #遍历所有key;keys he*  #以'he'开头的key;

      keys he[a-e]* #以‘he’开头第三个字母是a-e之间;

      keys ph?  #'?'代码一位,以ph开头且字母是三位的key  

    dbsize:计算key的总数

    exists key :检查key是否存在(存在返回1,不存在返回0)

    del key [key...]:删除key(返回执行成功的条数)

    expire key seconds:设置key在seconds秒后过期

    ttl key:查看key剩余的过期时间

    persist key:去掉key的过期时间

    type key :返回key的类型

  2、数据结构:

二、Redis API的使用:

  1、String:

    set key value     设置键值对 

    setnx key value    key不存在才设置

    set key value xx   key存在才设置

    get key         通过key获取value

    mget        批量获取,时间复杂度 o(n)

    mset        批量设置,时间复杂度o(n)

    getset key value   设置新值并返回旧值

    append key value   在原有value上追加值

    strlen key        字符长度 

    keys *         获取所有的key  (支持通配符 :* ? [])

    del key [kel...]    删除键值对

    incr key        对于整数value增加1

    incrby key num    对于整数value增加num

    decr key       对于整数value减少1

    decrby key num   对于整数value减少num

    incrbyfloat key num  对于浮点数value增加num

    getrange key start end   指定显示的位置       

    setrange key offset value  指定位置修改 

  2、Hash:

    hset key field value  将哈希表key中的域field 的值设为value

    hget key field    返回哈希表key中给定域field的值

    hdel key field       删除哈希表key中的fileld的值

    hgetall key      返回哈希表key中,所有的域和值

    hkeys key       返回哈希表key中所有的域

    hmset key field value [field value]  批量设置field-value对到哈希表key中 o(n)

    hmget key field [field]        批量获取key中 field域的值 o(n)

    hexists key field   判断哈希表key中是否有field

    hlen key       获取哈希表key中field的数量 

    hvals key        返回哈希表key对应所有field的value

    hsetnx key field value  设置哈希表key对应field(存在,则失败)的value 

    hincrby key field intCounter    哈希表key对应的field的value增加 intCounter,返回结果

    hincrbyfloat key feild floatCounter  哈希表key对应的field的value增加 floatCounter,返回结果         

  3、List:

    1、lpush key value [value...]    从列表左端插入值(1-N个)

    2、rpush key value [value...]    从列表右端插入值(1-N个)

    3、linsert key before|after value newValue  在列表指定的值前|后插入newValue 

    4、lrem key count value           根据count值,从列表中删除所有value,count大于0从左到右,小于0从右到左,等于0删除所有相等项;例如:lrem key -1 a 从右到左删除 1 个相等的项

    5、ltrim key start end        按照索引范围修剪列表

    6、lrange key start end        获取列表指定索引范围所有item等的项

    7、llen key              返回列表key的长度

    8、lpop key             将列表key最左端的元素弹出

    9、rpop key            将列表key最右端的元素弹出             

    10、lindex key index        获取列表key指定的索引item

    11、lset key index newValue      设置列表key指定索引值为newValue

    12、blpop key timeout        阻塞左弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞             

    13、brpop              阻塞右弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞

  注:根据不同的业务需求有以下建议:

    1、lpush + lpop = stack (以栈的方式存取,后进先出)

    2、lpush + rpop = queue (以队列的方式存取,先进先出)

    3、lpush + ltrim = capped conllection (以固定长度的列表存取)

    4、lpush + brpop = message queue (消息队列) 

  4、Set:

    1、sadd key element        向集合key添加element(如果存在添加失败)

    2、srem key element        将集合key中的element移除

    3、scard key             计算集合大小

    4、sismember key it          判断it是否在集合中

    5、srandmember key count      从集合中随机挑count个元素

    6、spop key             从集合中随机弹出一个元素

    7、smembers key            获取集合所有元素 

    8、sdiff key key [key...]          获取差集

    9、sinter key key  [key...]       获取交集

    10、sunion key key [key...]       获取并集

  5、zSet:

    1、zadd key score element      添加元素     

    2、zrem key element        删除元素

    3、zscore key element        返回元素的score

    4、zincrby key increScore element  增加或减少元素的score

    5、zcard key            返回元素的总个数

    6、zrank key element        返回元素的排名位置(升序)

    7、zrange key start end withscores  返回指定索引范围的升序元素[score]

    8、zrangebyscore key min max withscores   返回指定score范围的升序元素

    9、zcount key min max        返回有序集合内在指定score范围内的个数

    10、zremrangebyrank key start end  删除指定排名内的升序元素

    11、zremrangebyscore key min max  删除指定分数内的升序元素

    12、zrevrank            返回元素的排名位置(降序)      

    13、zrevrange            返回指定索引范围的降序元素[score]

    14、zrevrangebyscore          返回指定score范围的降序元素

    15、zinterstore            交集

    16、zuninstore            并集

转载于:https://www.cnblogs.com/haiyangwu/p/10328254.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )

测试移动端页面的时候,偶然发现点击底部input输入框时,弹出的虚拟键盘偶尔会挡住input输入框。 输入框固定在页面底部,如图所示: input固定底部设计图.png点击底部input输入框唤起软键盘时,软键盘挡住输入框。如图所示…

java采集温湿度水浸_机房水浸传感器:智能生活不可或缺的漏水传感器

原标题:机房水浸传感器:智能生活不可或缺的漏水传感器智能化的飞速发展让人们的生活发生了重大改变,为保证机房的安全、稳定、高效运行,网络设备的良好运行状态和设备使用寿命与安全,通常会对网络运行环境的电力供应、…

以编程方式访问Java基本类型的大小

许多不熟悉Java的开发人员首先要了解的一件事是Java的基本原始数据类型 ,其固定(与平台无关)的大小(以位或字节为单位用二进制补码表示 )以及它们的范围(Java中所有数字类型都是带符号的) &…

oracle用EXPLAIN PLAN 分析SQL语句

EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果…

创建型模式:原型模式

个人公众号原文:创建型模式:原型模式 五大创建型模式之五:原型模式。 简介 姓名 :原型模式 英文名 :Prototype Pattern 价值观 :效率第一 个人介绍 : Specify the kinds of objects to create u…

我的前端工具集(五)提示工具之模态窗提示

我的前端工具集(五)提示工具之模态窗提示 liuyuhang原创,未经允许禁止转载 目录 我的前端工具集 1、需求 很多页面操作都需要提示,比如操作成功,操作失败之类。 总不能没事就console.log或者alert吧。 所以一个操作提…

min-width:100%和max-width:100%的区别

1.width:100%和width:auto width:100%,设定对象的宽度占父元素的100%不论设定元素的margin值是多少,不包含margin; width:auto,根据设定对象的实际大小而自适应宽度,考虑设定元素的Margin值得大小,包含Margin 2.max-width:100%和m…

Java 8 Friday:可选将保留为Java中的一个选项

在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五,我们都会向您展示一些不错的教程风格的Java 8新功能&#…

java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...

在开发网站时候我们会遇到下面问题?- 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径?- 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径- 如果写绝对路径吧,你在本地写的时候…

新增数据库栏位脚本

IF NOT EXISTS(SELECT * FROM SYSCOLUMNSWHERE IDOBJECT_ID(NMNDIndicator) AND NAMENcheckperiod)BEGINALTER TABLE MNDIndicator ADD checkperiod NVARCHAR(100) NULL default END 转载于:https://www.cnblogs.com/snowball/archive/2007/05/14/745213.html

七天开发记录(3)

今天在网上找到了一个开发记账本微信小程序的网址 我看了一下这个APP的源代码,其用分为两个大包。 转载于:https://www.cnblogs.com/zjl-0217/p/10428525.html

做个商城吧(〇)

做个商城吧(〇) liuyuhang原创,未经允许进制转载! 作为自己想写的一个系列,应该仔细认真的更下来 目录在文末 1、想法 自己一个人做个商城,这种想法一直萦绕着。 但是也有不同的声音: 有淘宝&am…

链表!比数组更适合做增删操作的数据结构

什么是链表? 链表和数组的对比:在大多数语言中,数组的大小是固定的,从数组的起点或中间添加或删除元素的成本很高,因为需要移动元素。链表中的每一个元素在内存中不是连续放置的,和它左右两侧元素是没有关系…

Java 8中的Base64 –加入乐趣为时不晚

最后,Java 8发布了。 最后,有一种执行Base64编码的标准方法。 长期以来,我们一直依赖于Apache Commons Codec(无论如何还是很棒的)。 内存敏感的编码人员将拼命使用sun.misc.BASE64Encoder和sun.misc.BASE64Decoder&am…

多层架构模型中的BLL 与 Model的解释

理想状态这两个可以合并到一起来,就是业务对象,但model是把这个业务对象中的数据提取了出来,作为一个数据载体,可以在层间传递。业务对象中除去这些数据剩下的方法就构成了BLL层。显示层Presentation Layer业务逻辑层Business Log…

java创建方法并引用_java – 创建非捕获方法引用,它将调用超类方法

我正在尝试重构以下代码&#xff1a;class Base {private Object a, b, <...>; // theres like 10 of these attributes of different typepublic Object a() {return a;}public Object b() {return b;}// more getters like the ones above}class RootNode extends Base…

maven快速入门

一。前提条件 你的电脑必须安装maven和java 二。检验安装 执行命令&#xff1a;mvn --version 输出&#xff1a; Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:4702:00) Maven home: D:\apache-maven-3.6.0\bin\.. Java version: 1.8.0_16…

如何使用JSR107缓存注释

最近&#xff0c;我对JSR107缓存注释以及JSR107的实现是否提供它们有一些疑问。 可以将缓存注释添加到Java类中&#xff0c;并将其作为方法调用缓存操作。 例如&#xff0c;下面是带注释的BlogManager。 CacheDefaults(cacheName "blgMngr") public class BlogMan…

js之作用域

1.什么是作用域 作用域是用于收集存储维护变量&#xff0c;以及当前执行代码声明的变量所拥有的权限&#xff0c; 例如 &#xff1a; function foo(a){ console.log(a); -------- 1 }; foo(666); console.log(a); ------- 2 此时执行该段代码 1 -- 处打印我们得…

TMS320F28335——IO控制/定时计操作

一、实现GPIO控制 1.硬件连接 从电路原理图上看来&#xff0c;LED灯是接在GPIO34 上的。 2.IO设置 2.1设置功能 GPXMUX1/2&#xff1a;功能选择寄存器   GPXMUX1/2 每组 IO 一般有 32 个 IO 口可以配置。GPXMUX1 对应每组的低 16 个 IO 口&#xff0c;GPXMUX2 对应高 16 个…