Redis各数据结构常用命令
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各数据结构常用命令的更多相关文章
- redis 介绍和常用命令
redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- 记录redis安装及常用命令
Redis安装及常用命令 一.安装 1.下载,解压,进入redis解压目录,make. make PREFIX=目录/redis install :安装到指定目录文件名为redis. 2.将解压目录里 ...
- 第18章 Redis数据结构常用命令
18-1 字符串的一些基本命令 18-1 :配置Spring关于Redis字符串的运行环境 <bean id="poolConfig" class="redis.c ...
- VMWare12安装CentOS7以及redis安装和常用命令
一.vmware安装centos7后没有网卡 VMWare 12版本不提供32位安装程序,只有64位安装程序,如果在安装CentOS时,选择的是CentOS而不是CentOS 64位,则会出现Cent ...
- Redis学习笔记--常用命令
以下为本人学习Redis的备忘录,记录了大部分常用命令 1.客户端连接redis服务端: ===启动Redis服务端 redis-server /yourpath/redis.conf ===启动Re ...
- Redis入门及常用命令学习
Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持 ...
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- Redis总结(七)Redis运维常用命令
redis 服务器端命令 redis 127.0.0.1:6380> time ,显示服务器时间 , 时间戳(秒), 微秒数 1) "1375270361" 2) &quo ...
随机推荐
- lr录制选项设置代理
解决录制时浏览器打不开录制时录不到脚本等浏览器兼容问题一.lr录制选项设置代理1.点击Options 2.点击Port Mapping→Newentrv 3.lr代理设置 ·Socket Servic ...
- 前端jQuery学习(一)
把最近学习的前端框架jQuery整理一下.你可能听说过jQuery,因为他是JavaScript世界中使用最广泛的一个库. 江湖传言,全世界大约有80~90%的网站直接或间接地使用了jQuery.鉴于 ...
- Webpack概念
webpack概念 我经常用 webpack,打算做一次比较详细的概念清点和梳理.从 0 配置 webpack,由于 webpack5(2019.07.27)暂时还没有发布.并且从Webpack Mi ...
- DFS_全球变暖_蓝桥杯2018省赛N0.9
你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. .. ...
- 知识图谱学习与实践(4)——Protégé使用入门
1 Protégé简介 Protégé是一个本体建模工具软件,由斯坦福大学基于java语言开发的,属于开放源代码软件.软件主要用于语义网中本体的构建和基于本体的知识应用,是本体构建的核心开发工具,最新 ...
- vue教程二 vue组件(1)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script ...
- Git 从master拉取代码创建新分支
从master拉取新分支并push到远端 开发过程中经常用到从master分支copy一个开发分支: 1.切换到被copy的分支(master),并且从远端拉取最新版本 $git checkout m ...
- 9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比
上一篇写了如何从DB获取预期.实际结果,这一篇分别对不同情况说下怎么进行对比. PS:这部分在JSON对比中也适用. 1.结果只有一张表,只有一条数据 数据格式:因为返回的是dicts_list的格式 ...
- Selenium+java - 日期控件的处理
前言 一般的日期控件都是input标签下弹出来的,设置日期使用selenium中的sendKeys 方法就可以解决. 但是我们也会碰到下面的时间日期控件(这个时候这个文本框是不允许我们输入时间的)如图 ...
- 12、面向对象的思想(OOP)
面向对象与面向过程 1.都是解决问题的思维方式,都是代码的组织的方式: 2.解决简单的问题可以使用面向过程: 3.解决复杂的问题建议使用面向对象,微观处理依旧会使用面向过程. 对象的进化史(数据管理的 ...