redis 通用API

keys * 遍历所有key 一般不在生产环境中使用 redis单线程,容易阻塞其他命令执行 O(n)

dbsize 计算key的总数 O(1)
exists 检查key是否存在 O(1)
del key 删除指定key-value O(1)
expire key seconds key在second秒后过期 O(1)
ttl key 查看key剩余的过期时间 O(1)
persist key 去掉key的过期时间 O(1)
type key 返回key的类型(string hash list set zset none)O(1)

字符串:
键值结构:value可以存字符串 二进制  key -value
场景:缓存 计数器 分布式锁

get key 获取key对应的value O(1)
set key value 设置key-value O(1)
del key 删除key-value O(1)
incr key key自增1,如果key不存在,自增后get(key)=1
decr key key自减1,如果key不存在,自减后get(key)=-1
incrby key k key自增k,如果key不存在,自增后get(key)=k
decrby key k key自减k,如果key不存在,自减后get(key)=-k
set key value 不管key是否存在,都设置 o(1)
setnx key value key 不存在,才设置 o(1)
set key value xx key存在 才设置o(1)
mget key1 key2 key3... 批量获取key,原子操作 o(n)
mset key1 value1 key2 value2 key3 value3 批量设置key-value o(n)
getset key newvalue #set key new value并返回旧的value o(1)
append key value #将value追加到旧的value o(1)
strlen key #返回字符串的长度(注意中文)
incrbyfloat key 3.5 #增加key对应的值3.5
getrange key start end #获取字符串指定下标所有的值
setrange key index value #设置指定下标所有对应的值

hash哈希:

哈希键值结构为key - field(属性) value(属性值) field不能相同 value 可以相同

hget key field #获取hash key 对应的field的value o(1)
hset key field value # 设置hash key 对应field的value o(1)
hdel key field 删除hash key 对应field的value o(1)
hexists key field #判断hash key 是否有field o(1)
hlen key #获取hash key field的数量 o(1)
hmget key field field2... fieldN #批量获取hash key的一批field对应的值 o(n)
hmset key field1 value1 field2 value2.... fieldN valueN #批量设置hash key的一批field value o(n)
hgetall key #返回hash key 对应所有的field和value o(n)
hvals key #返回hash key对应所有field的value o(n)
hkeys key #返回hash key 对应所有field o(n)

list列表:

特性:有序 可以重复 左右两边插入弹出
数据结构:key elements
rpush key value1 value2... valueN o(1~n)
#从列表右端插入值(1到N个)
lpush key value1 value2... valueN o(1~n)
#从列表左端插入值(1到N个)
linsert key before|after value newValue o(n) #在list指定的值前|后插入newValue
lpop key #从列表左侧弹出一个item o(1)
rpop key #从列表右侧弹出一个item o(1)
lrem key count value #根据count值,从列表中删除所有value相等的项 o(n)(n)
(1)count>0,从左到右,删除最多count个value相等的项
(2)count<0,从右到左,删除最多Math.abs(count)个value相等的项
(3)count=0,删除所有value相等的项
ltrim key start end #按照索引范围修建列表 o(n)
lrange key start end(包括end)
#获取列表指定索引范围所有item
lindex key index #获取列表指定索引的item o(n)
llen #获取列表长度 o(1)
lset key index newValue #设置列表指定索引值为newValue o(n)
blpop key timeout #lpop阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞
brpop key timeout #rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞

应用实现:

1.LRUSH + LPOP = Stack 栈
2.LRUSH + RPOP = Queue 队列
3.LRUSH + LTRIM = Capped Collection 有固定数量的队列
4.LPUSH + BRPOP = Message Queue 消息队列

集合set:

特性:无序 无重复 集合间操作
key values(element)

sadd key element #向集合key添加element(如果element已经存在,添加失败) o(1)
srem key element #将集合key中的element移除掉 o(1)
scard key 计算集合大小
sismember key it #判断it是否在集合中
srandmember key count #从集合中随机挑count个元素
spop key #从集合中随机弹出一个元素
smembers #获取所有集合元素

sdiff set1 set2 #两个集合的差集
sinter set1 set2 #两个集合的交集
sunion set1 set2 #两个集合的并集
sdiff|sinter|suion + store destkey.. #将差集、交集、并集结果保存在destkey中

zset有序集合:

特性:有序 无重复
数据结构:key score value

zadd key score(可以重复) element(不可以重复) #添加score和element o(logN)
zrem key element #删除元素
zscore key element #返回元素的分数
zincrby key incrbyScore element #增加或减少元素的分数
zcard key #返回元素的总个数
zrange key start end [WITHSCORES] #返回指定索引范围内的升序元素[分值]
zrangebyscore key minScore maxScore [WITHSCORES] #返回指定分数范围内的升序元素[分值]
zcount key minScore maxScore #返回有序集合内在指定分数范围内的个数
zremrangebyrank key start end #删除指定排名内的升序元素
zremrangebyscore key minScore maxScore #删除指定分数内的升序元素

Redis各数据结构常用命令的更多相关文章

  1. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  2. Redis数据类型和常用命令

    Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...

  3. 记录redis安装及常用命令

    Redis安装及常用命令 一.安装 1.下载,解压,进入redis解压目录,make. make PREFIX=目录/redis install :安装到指定目录文件名为redis. 2.将解压目录里 ...

  4. 第18章 Redis数据结构常用命令

    18-1 字符串的一些基本命令 18-1 :配置Spring关于Redis字符串的运行环境 <bean id="poolConfig" class="redis.c ...

  5. VMWare12安装CentOS7以及redis安装和常用命令

    一.vmware安装centos7后没有网卡 VMWare 12版本不提供32位安装程序,只有64位安装程序,如果在安装CentOS时,选择的是CentOS而不是CentOS 64位,则会出现Cent ...

  6. Redis学习笔记--常用命令

    以下为本人学习Redis的备忘录,记录了大部分常用命令 1.客户端连接redis服务端: ===启动Redis服务端 redis-server /yourpath/redis.conf ===启动Re ...

  7. Redis入门及常用命令学习

    Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持 ...

  8. redis数据类型及常用命令介绍(图文实例)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...

  9. Redis总结(七)Redis运维常用命令

    redis 服务器端命令 redis 127.0.0.1:6380> time  ,显示服务器时间 , 时间戳(秒), 微秒数 1) "1375270361" 2) &quo ...

随机推荐

  1. UltraEdit不自动生成保存备份文件(.bak)

    UltraEdit修改文件或格式化文件保存后会生成烦人的.bak文件. 去掉该功能办法如下: 高级 -> 配置 -> 文件处理 -> 备份 “保存时备份文件”选择“不备份” (Adv ...

  2. 北大ACM试题分类+部分解题报告链接

    转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...

  3. NDK jni mk文件 so文件 巴啦啦 初体验

    概念JNI(Java Native Interface,Java本地接口),实现了Java和其他语言的交互(主要是C/C++),如:Java程序通过JNI调用C/C++编写的在Windows上运行的D ...

  4. 【NOI 2015】程序自动分析 并查集与离散化处理

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...

  5. scrapy框架与python爬虫

  6. H5 Handlebars的简单使用

    扫码关注公众号,不定期更新干活 web 开发中,js 解析JSON 是经常的事情.非常繁琐.handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧js ...

  7. 调用链系列(1):解读UAVStack中的贪吃蛇

    一.背景 对于分布式在线服务,一个请求需要经过多个系统中多个模块,可能多达上百台机器的协作才能完成单次请求.这种场景下单靠人力无法掌握整个请求中各个阶段的性能开销,更无法快速的定位系统中性能瓶颈.当发 ...

  8. (二)对象以及变量的并发访问--synchronized的使用细节,用法

    具体的记录synchronized关键的各种使用方式,注意事项.感觉一步一步跟我来都可以看懂滴 大致是按照以下思路进行书写的.黑体字可以理解为结论, 1.synchronized锁的是什么? 2.sy ...

  9. XAMPP/LAMPP到底在哪里启用APACHE2的rewrite

    XAMPP/LAMPP是一套我们在个人建站过程中非常便捷常用的集成环境.特别是对于学习PHP开发和建站非常便捷. 最近在使用CentOS7环境下的XAMPP过程中,遇到了一个问题,也就是apache2 ...

  10. Android OTG之USB转串口模块通讯

    微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 1.背景简介 我们公司开发了一款室内机平板APP应用,要求平板能去控制智能门锁. ...