redis学习(三)五种数据结构
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、string
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
基本的命令:
set key value 设置指定 key 的值
get key 获取指定 key 的值
keys ? 匹配一个字符
keys [0-2]匹配括号间任一个字符
keys \x匹配字符x的key
keys * 匹配所有的key
strlen key 返回 key 所储存的字符串值的长度。
mset key value key value 设置多个key的值
mget key key 得到多个key的值
exists key 判断key是否存在
del key 删除key
type key 判断key的数据类型
setnx key value 只有在 key 不存在时设置 key 的值,如果存在则不变
incrby key increment 将 key 所储存的值加上给定的增量值(increment)
decrby key increment 将 key 所储存的值减去给定的增量值(increment)
expire key seconds 为给定 key 设置过期时间,以秒为单位
ttl key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)
redis 127.0.0.1:> set k1 v1
OK
redis 127.0.0.1:> get k1
"v1"
redis 127.0.0.1:> keys k?
) "k3"
) "k1"
) "k4"
) "k2"
) "k5"
redis 127.0.0.1:> keys k[-]
) "k1"
) "k2"
redis 127.0.0.1:> keys *
) "k3"
) "k1"
) "k4"
) "k2"
) "k5"
redis 127.0.0.1:> STRLEN k1
(integer)
redis 127.0.0.1:> mget k1 k2
) "v1"
) "v2"
redis 127.0.0.1:> EXISTS k1
(integer)
redis 127.0.0.1:> DEL k1
(integer)
redis 127.0.0.1:> EXISTS k1
(integer)
redis 127.0.0.1:> type k2
string
2、hash
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对。
基本命令:
hset key field value 将哈希表 key 中的字段 field 的值设为 value
hmset key field value field value 同时将多个 field-value (域-值)对设置到哈希表 key 中。
hgetall key 获取在哈希表中指定 key 的所有字段和值
hget key field 获取存储在哈希表中指定字段的值
hmget key field field 获取所有给定字段的值
hexists key field 查看哈希表 key 中,指定的字段是否存在
hkeys key 获取所有哈希表中的字段
hvals key 获取哈希表中所有值
hlen key 获取哈希表中字段的数量
redis 127.0.0.1:> hmset student id name zhangsan age tel
OK
redis 127.0.0.1:> HGETALL student
) "id"
) ""
) "name"
) "zhangsan"
) "age"
) ""
) "tel"
) ""
redis 127.0.0.1:> hget student id
""
redis 127.0.0.1:> hget student name age
(error) ERR wrong number of arguments for 'hget' command
redis 127.0.0.1:> hmget student name age
) "zhangsan"
) ""
redis 127.0.0.1:> HEXISTS student tel
(integer)
redis 127.0.0.1:> HSET student height
(integer)
redis 127.0.0.1:> hkeys student
) "id"
) "name"
) "age"
) "tel"
) "height"
redis 127.0.0.1:> HVALS student
) ""
) "zhangsan"
) ""
) ""
) ""
redis 127.0.0.1:> HLEN student
(integer)
3、list
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含 232 - 1 个元素
基本命令:
lpush key value value 从左边将一个或多个值插入到列表
rpush key value value 从右边将一个或多个值插入到列表
lrange key start stop 获取列表指定范围内的元素 (0 -1表示全部范围)
lpop key 从左边移出并获取列表的第一个元素
rpop key 从右边移出并获取列表的第一个元素
llen key 获取key的大小
lrem key count value 删除列表中为value的元素,返回实际删除的元素个数。count > 0:从列表左边开始删除值为value的元素,count < 0:从右边开始删除,count = 0:删除所有
ltrim key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
lindex key index 通过索引获取列表中的元素 index为负数,表示从右边开始
linsert key before|after pivot value linsert在列表的值为pivot的元素前或者后插入value
redis 127.0.0.1:> lpush num
(integer)
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
redis 127.0.0.1:> rpush num
(integer)
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
) ""
) ""
redis 127.0.0.1:> LPOP num
""
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
) ""
redis 127.0.0.1:> RPOP num
""
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
redis 127.0.0.1:> LLEN num
(integer)
redis 127.0.0.1:> LREM num
(integer)
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
redis 127.0.0.1:> LINDEX num
""
redis 127.0.0.1:> LINDEX num -
""
redis 127.0.0.1:> LTRIM num
OK
redis 127.0.0.1:> LINDEX num -
""
redis 127.0.0.1:> LRANGE num -
) ""
) ""
redis 127.0.0.1:> LINSERT num before
(integer)
redis 127.0.0.1:> LINSERT num before
(integer)
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
redis 127.0.0.1:> LINSERT num after
(integer)
redis 127.0.0.1:> LRANGE num -
) ""
) ""
) ""
) ""
) ""
redis 127.0.0.1:>
4、set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合中最大的成员数为 232 - 1
基本命令:
sadd key member 向集合添加一个或多个成员,如果元素已存在,则不会覆盖,返回成功添加的元素个数
smembers key 返回集合中的所有成员
sismenber key member 判断member是否是key的成员
sdiff keyA keyB 返回给定所有集合的差集,即keyA-keyB
sinter keyA keyB 返回给定所有集合的交集,即keyA∩keyB
sunion keyA keyB 返回给定所有集合的并集,即keyA∪keyB
sunionstore destination keyA keyB 将keyA∪keyB的值保存到destination
spop key 移除并返回集合中的一个随机元素
redis 127.0.0.1:> SADD set1
(integer)
redis 127.0.0.1:> SMEMBERS set1
) ""
) ""
) ""
redis 127.0.0.1:> SISMEMBER set1
(integer)
redis 127.0.0.1:> SADD set2
(integer)
redis 127.0.0.1:> SADD set3
(integer)
redis 127.0.0.1:> SDIFF set1 set3
) ""
redis 127.0.0.1:> SINTER set1 set3
) ""
) ""
redis 127.0.0.1:> SUNION set1 set2
) ""
) ""
) ""
) ""
) ""
) ""
redis 127.0.0.1:> SUNIONSTORE set12 set1 set2
(integer)
redis 127.0.0.1:> SMEMBERS set12
) ""
) ""
) ""
) ""
) ""
) ""
redis 127.0.0.1:> SPOP set12
""
5、zset
有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
zadd key score member 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange key start stop [withscores] 通过索引区间返回有序集合成指定区间内的成员,分数从低到高
zrevrange key start stop [withscores] 返回有序集中指定区间内的成员,通过索引,分数从高到底
zscore key member 返回有序集中,成员的分数值
zrangebyscore key min max 通过分数返回有序集合指定区间内的成员
zrank key member 返回有序集合中指定成员的索引
redis 127.0.0.1:> ZADD zset v1
(integer)
redis 127.0.0.1:> ZADD zset v2 v3
(integer)
redis 127.0.0.1:> ZRANGE zset - withscores
) "v1"
) ""
) "v2"
) ""
) "v3"
) ""
redis 127.0.0.1:> ZSCORE zset v1
""
redis 127.0.0.1:> ZRANGE zset -
) "v1"
) "v2"
) "v3"
redis 127.0.0.1:> ZREVRANGE zset -
) "v3"
) "v2"
) "v1"
redis 127.0.0.1:> ZRANGEBYSCORE zset
) "v1"
) "v2"
redis 127.0.0.1:> ZINCRBY zset v3
""
redis 127.0.0.1:> ZCOUNT zset
(integer)
redis 127.0.0.1:> ZREM zset v3
(integer)
redis 127.0.0.1:> ZRANGE zset -
) ""
) ""
redis 127.0.0.1:> ZRANK zset v1
(integer)
redis 127.0.0.1:> ZRANK zset v2
(integer)
redis 127.0.0.1:>
redis学习(三)五种数据结构的更多相关文章
- Redis学习笔记--五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- Redis学习一 五种基本的数据类型
首先一定要确保Redis是运行这的. 不知道为啥,我的电脑陪完服务以后,刚配完的时候好使,已重启就不行了,死活起不来. 好吧,这些暂时不是很重要. 运行 redis-server.exe 在开一个窗口 ...
- Redis 五种数据结构详解(string,hash,list,set,zset)
一.五种数据结构: 1. String--字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候e ...
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- Redis(1)---五种数据结构
五种数据结构 一.全局key操作 --删 flushdb --清空当前选择的数据库 del mykey mykey2 --删除了两个 Keys --改 --将当前数据库中的 mysetkey 键移入到 ...
- 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- 【Redis的那些事 · 上篇】Redis的介绍、五种数据结构演示和分布式锁
Redis是什么 Redis,全称是Remote Dictionary Service,翻译过来就是,远程字典服务. redis属于nosql非关系型数据库.Nosql常见的数据关系,基本上是以key ...
- 2.Redis五种数据结构
2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...
- Redis入门到高可用(四)—— Redis的五种数据结构的内部编码
Redis的五种数据结构的内部编码
- Redis五种数据结构(Windows Server)
1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...
随机推荐
- 前端面试题1:Object.prototype.toString.call() 、instanceof 以及 Array.isArray()三种方法判别数组的优劣和区别
1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...
- Java代码工具箱之控制台输出重定向_控制台输出到文件
1. 情形:有时候控制台输出太多,在MyEclipse显示不全. 2. 说明:本代码只会重定向 system.out 的内容, error及其它不受代码影响.其它应该类似. //自定导入必要库 //然 ...
- 避免修改Android.mk添加cpp文件路径
手工输入项目需要编译的cpp文件到Android.mk里的缺点 1)繁琐,如果cpp文件很多,简直无法忍受 2)手工输入过程中容易出现错误 3)如果cpp文件更改名称,需要修改android.mk文件 ...
- 使用Vue CLI 3快速创建项目
首先 vue create ant-design-vue-pro 执行命令会显示两个选项,1默认,2自定义 我么选择自定义 选择好自定义的插件回车就等待下安装成功然后进入项目文件夹 cd ant-de ...
- fopen打开文件失败的问题
fopen打开带中文路径或含中文名称的文件失败. 解决这个问题有两个方法:一是改用_wfopen,这个函数接受两个宽字符类型,函数原型如下: FILE* _wfopen(const wchar_t* ...
- zabbix 密码忘记了如何恢复
1.进入数据库 2.使用zabbix的数据库 use zabbix: 3.查看表信息 show tables; 4.搜索users表 select * from users; 5.修改userid为1 ...
- 十一、Shell 文件包含
Shell 文件包含 和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号( ...
- 三 python并发编程之多线程-理论
一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...
- 20190102(多线程,守护线程,线程互斥锁,信号量,JoinableQueue)
多线程 多进程: 核心是多道技术,本质上就是切换加保存技术. 当进程IO操作较多,可以提高程序效率. 每个进程都默认有一条主线程. 多线程: 程序的执行线路,相当于一条流水线,其包含了程序的具体执行步 ...
- Building a Space Station POJ - 2031
Building a Space Station POJ - 2031 You are a member of the space station engineering team, and are ...