[Redis] Redis的基本数据结构
key-value
通过key获取或设置value
SET key value
GET key
SET server:name "fido"
GET server:name
SETNX
: SET-if-not-exists
INCR
: +1 原子操作
SET connections 10
INCR connections =>11
INCR A =>1
给key设置过期时间
TTL
获取一个key的存活时间,每次set一个key的value,过期时间将会重置
-2
已过期-1
永不过期
SET str "ASD"
EXPIRE str 120 # 120s后过期
TTL str # 获取str的过期时间
list
RPUSH
插入数据到list末尾
LPUSH
插入数据到list起点
LRANGE
返回list
的子集 下标从0开始
LRANGE friends 0 -1 # 类似python 返回整个list
LLEN
返回list
长度
LPOP
删除list
第一个元素并返回这个元素(左边是第一个元素)
RPOP
删除list
最后一个元素并返回这个元素(右边是最后一个元素)
set
去重的list,无序,由于是无序的所以没有srange这个命令,取而代之的是SMEMBERS
用于返回所有的数据
SADD
重复的元素会插入失败
SADD data_set "aa" // 1
SADD data_set "data1" // 1
SADD data_set "aa" // 0,已经存在aa,插入失败
SREM
从set
中删除指定元素
SREM data_set "data1"
SISMEMBER
是否set
中元素 1 => 是
SISMEMBER data_set "aa"
SMEMBERS
返回set
所有元素
SUNION
两个或多个set
合并并返回所有元素的列表
SCARD
返回set长度
zset (有序set)
通过一个score来排序
添加数据的时候要指定一个score,用于排序,排序是redis自动执行的
ZADD superheros 1 ironman
ZADD superheros 3 thor
ZADD superheros 2 spiderman
ZRANGE key start stop [WITHSCORES]
返回key
中[start stop] 的数据,按score
递增排序,递减排序用ZREVRANGE
加上withscores
后会将score也输出
> zrange superheros 0 -1
1) "ironman"
2) "spiderman"
3) "thor"
> zrange superheros 0 -1 withscores
1) "ironman"
2) 1.0
3) "spiderman"
4) 2.0
5) "thor"
6) 3.0
ZREM
删除zset
中一个或多个成员,不存在的被忽略
返回成功移除的数量
Hashes
> HSET key field value
(integer) 1
> HSET key field1 value1
(integer) 1
> HGET key field
"value"
HMSET key field1 value1 field2 value2 field3 value3
OK
> HMGET key field1 field2 filed3 field4
1) "value1"
2) "value2"
3) "value3"
4) (nil)
Sets field in the hash stored at key to value. If key does not exist, a new key holding a hash is created. If field already exists in the hash, it is overwritten.
0 变量已存在,值已更新
1 变量不存在,已经创建
理解为key指向了一个对象,这个对象里都是键值对
HINCRBY
为field的value增加指定数值,原子操作,如果field不存在将会新增
HSET key age 3
HINCRBY key age 2 # age变成5
HINCRBY key num 1 # num被新建,值设置为1
HDEL
删除key的某个field
HDEL key age
Reference
原文地址:https://www.cnblogs.com/arcsinw/p/11414576.html
- WordPress 网站开发“微信小程序”实战(五)
- Windows Runtime(WinRT) 揭秘
- WeApp-Workflow: 基于Gulp 的微信小程序前端开发工作流
- 如何安装Windows Phone SDK 7.1 Release Candidate (RC)
- 微信与支付宝回应央行新规:认同央行规范!
- Gulp 工作流中Sass 增量编译功能的探索
- Sass与Compass——回顾
- 苹果就“降速门”致歉;央行批扫码支付不正当竞争;王健林旗下公司遭集体裁员
- 姚期智教授:量子计算是千亿万亿级别的产业,或成为科技创新的引擎
- Powershell中禁止执行脚本解决办法
- 使用AsyncTask异步更新UI界面及原理分析
- 商家为何要做小程序?
- Android中关于dip和px以及转换的总结
- Python介绍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
- KEDA发布2.0(Beta)|来一个伸缩测试
- pandas入门:Series、DataFrame、Index基本操作都有了!
- 这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
- 手把手教你用 Python 搞定网页爬虫!
- 为并发而生的 ConcurrentHashMap,基于 Java8 分析
- 使用Kustomize定制Helm Chart
- 踩坑了,JDK8 中 HashMap 依然会产生死循环问题!
- 使用shell-operator实现Operator
- 教你用Python 操作 PDF 的几种方法
- 如何在K8s上设置生产级的EFK?(上)
- IntelliJ IDEA 构建 Maven 多模块工程项目
- GDP越高就越幸福吗?用Python分析《世界幸福指数报告》后我们发现…
- 图解:什么是哈希?
- 【Python基础】一文看懂 Pandas 中的透视表