[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
设置key中给定域field的值为value
HMSET key field value field2 value2
同时设置key的多个域
HGET key field
获取key的某个域的值
HMGET key field field2
获取key的多个域的值
> 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)
HSET的返回值
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
HGETALL 获取key的所有field和value
> HGETALL key
1) "field"
2) "value"
3) "field2"
4) "value2"
HLEN key
获取给定key中域的数量
HEXISTS key field
给定域中是否存在域field,返回0(不存在)或1(存在)
HKEYS key
类似keys,返回key中所有field
> hkeys key
1) "field"
2) "field2"
HVALS key
返回key中所有value
> hvals key
1) "value"
2) "value2"
Reference
[Redis] Redis的基本数据结构的更多相关文章
- Redis中5种数据结构的使用场景介绍
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/108.html?1455861435 一.redis 数据结构使用场景 原 ...
- redis中5种数据结构的使用
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- Redis中的基本数据结构
Redis基础数据结构 基础数据结构 sds简单动态字符串 数据结构 typedef struct sdstr{ int len // 字符串分配的字节 int free // 未使用的字节数 cha ...
- Redis中5种数据结构的使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- Redis 中 5 种数据结构的使用场景介绍
这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String.Hash.List.Set.Sorted Set做了讲解,需要的朋友可以参考下 一.redis ...
- Redis所支持的数据结构
1.启动Redis2.Redis所支持的数据结构 2.1.Redis常用操作 2.2.String类型及操作 2.3.Hash类型及操作 2.4.List类型及操作 2.5.Set类型及操作 2.6. ...
- Redis入门到高可用(四)—— Redis的五种数据结构的内部编码
Redis的五种数据结构的内部编码
- redis的5种数据结构的使用场景介绍
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- Redis学习笔记之Redis中5种数据结构的使用场景介绍
原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构 ...
- 详细介绍Redis的几种数据结构以及使用注意事项(转)
原文:详细介绍Redis的几种数据结构以及使用注意事项 1. Overview 1.1 资料 <The Little Redis Book>,最好的入门小册子,可以先于一切文档之前看,免费 ...
随机推荐
- 2019杭电多校6 hdu6638 Snowy Smile(二维最大矩阵和 线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意:给你一些点的权值,让找一个矩形圈住一部分点,问圈住点的最大权值和 分析:由于是稀疏图,明显要先把x, ...
- POJ 1077 Eight (BFS+康托展开)详解
本题知识点和基本代码来自<算法竞赛 入门到进阶>(作者:罗勇军 郭卫斌) 如有问题欢迎巨巨们提出 题意:八数码问题是在一个3*3的棋盘上放置编号为1~8的方块,其中有一块为控制,与空格相邻 ...
- codeforces 626 G. Raffles(线段树+思维+贪心)
题目链接:http://codeforces.com/contest/626/problem/G 题解:这题很明显买彩票肯定要买贡献最大的也就是说买p[i]*(num[i]+1)/(num[i]+a[ ...
- 牛客小白月赛4 J 强迫症 思维
链接:https://www.nowcoder.com/acm/contest/134/J来源:牛客网 题目描述 铁子最近犯上了强迫症,他总是想要把一个序列里的元素变得两两不同,而他每次可以执行一个这 ...
- JOBDU 1108 堆栈的使用
之所以把这道题目贴出来的原因,是因为真的有几个地方要注意的 题目1108:堆栈的使用 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:10763 解决:3119 题目描述: 堆栈是一种基本的 ...
- NOIP 2016 蚯蚓 题解
一道有趣的题目,首先想到合并果子,然而发现会超时,我们可以发现首先拿出来的切掉后比后拿出来切掉后还是还长,即满足单调递增,故建立三个队列即可. 代码 #include<bits/stdc++.h ...
- 代码整洁 vs 代码肮脏
写出整洁的代码,是每个程序员的追求.<clean code>指出,要想写出好的代码,首先得知道什么是肮脏代码.什么是整洁代码:然后通过大量的刻意练习,才能真正写出整洁的代码. WTF/mi ...
- Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面
Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面 在<Spring Boot(一):快速开始>中介绍了如何使用 Spring Boot 构建一个工程,并且提 ...
- QCustomplot使用分享(八) 绘制图表-加载cvs文件
目录 一.概述 二.效果图 三.源码讲解 1.源码结构 2.头文件 3.移动游标 4.设置坐标轴矩形个数 5.添加图表数据 6.设置折线图类型 6.其他函数 四.测试方式 1.测试工程 2.测试文件 ...
- Android嵌入式开发初学者的几个注意点
一:首先你必须了解ARM平台 Android 移植与驱动核心开发,当然也可以是X86和其他的平台,不过其他平台的Android智能终端开发并不是很多. Android嵌入式智能操作系统是基于Linux ...