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. 【pip】brew install pip 问题

    Mac 下用 brew install pip 命令安装 pip 时报错: Error: No available formula with the name "pip" Home ...

  2. hdu 6397 Character Encoding (生成函数)

    Problem Description In computer science, a character is a letter, a digit, a punctuation mark or som ...

  3. 有趣的Flex布局

    对于刚接触前端的小白,在还原页面样式的时候,往往会遇到页面布局(layout)上的问题,用着生硬的padding来固定盒子的位置,不仅代码看的沉重,还得适应各种浏览器页面,始终没有办法做到统一.接下来 ...

  4. Redhat 离线安装 Docker (Community from binaries)

    需求 在离线环境安装Docker (Community版),因为Enterprise版要花钱.当然资金充裕的客户可参考https://docs.docker.com/install/linux/doc ...

  5. Computing Jobs

    docker&k8shadoopsparkhbasemesosrediskafkazookeeper SCSI.NVMe.PCIe devops

  6. ThreadPoolExecutor线程池的一个面试题

    问题:现有一个线程池,参数corePoolSize = 5,maximumPoolSize = 10,BlockingQueue阻塞队列长度为5,此时有4个任务同时进来,问:线程池会创建几条线程? 如 ...

  7. 聊聊目标管理之 OKR

    这篇文章我们不谈技术,聊点轻松的,那聊什么呢?聊一下最近很火的目标管理 OKR.不知道小伙伴你们的公司什么情况,我的公司今年开始推行 OKR,用了大半年的时间,感觉效果还不错,上周六又参加了一天的复盘 ...

  8. 使用JMS接口接入WebSphere MQ消息

    在你的应用程序中利用IBM WebSphere MQ消息中间件提供Java消息服务开放接口. IBM WebSphere MQ(WMQ)是一套面向消息的中间件(message-oriented mid ...

  9. dns自动配置shell脚本

    代码: #!/bin/bash #获取url echo "url:" read url #获取ip echo "ip:" read ip #向/etc/name ...

  10. IPC机制1

    1.Android IPC简介 Inter-Process Communication的缩写就是IPC,含义是进程间通信或是跨进程间通信,是指两个进程进行交换数据的过程. 进程是什么? 进程在pc上就 ...