Redis 基础数据结构

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 系列文章基于Redis2.8版本1:Redis学习资料收集2:Redis基础数据结构3:Redis实现分布式锁2.1 String2.1.1 小知识Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,需要注意的是字符串最大长度为 512M。

系列文章基于Redis2.8版本
1:Redis学习资料收集
2:Redis基础数据结构
3:Redis实现分布式锁

2.1 String

2.1.1 小知识

Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,
需要注意的是字符串最大长度为 512M。

2.1.2 SET GET 赋值,取值
SET key value [EX seconds] [PX milliseconds] [NX|XX]

如果KEY已存在,就覆盖旧值

[EX seconds] 设置键的过期时间  秒 
SET key value EX second == SETEX key second value

[PX milliseconds] 设置键的过期时间 毫秒
SET key value PX millisecond == PSETX key millisecond value

NX  只有在键不存在的时候,才对键进行设置
SET key value NX == SETNX key value

XX 只在键已存在的时候,才对键进行设置

GET key 

返回key所关联的字符串值
2.1.3 MSET MGET 批量操作

同时设置一个或多个key-value

MSET key1 value1 key2 value2 key value3

MGET key1 key2 key3
2.1.4 自增 自减
INCR key 将key存储的数字增1
INCRBY key increment  将key存储的数字增increment
INCRBYFLOAT key increment  将key存储的数字增加浮点数increment
DECR key  将key存储的数字减1
DECRBY key decrement 将key存储的数字减decrement
2.1.5 value字符处理
SETRANGE key offset value  用value参数覆盖给定key 从偏移量offset开始

STRLEN key  返回key所存储的字符串值得长度

GETRANGE key start end  返回key字符串中的子串  -1表示最后个字符

APPEND key value  将value追加到原来的value的末尾
2.1.6 操作
赋值,取值
> set name liuawei
OK
> get name
"liuawei"
> set name liuawei2 NX
(nil)
> get name
"liuawei"
> set exkey exvalue EX 6
OK
> get exkey
"exvalue"
> get exkey
(nil)

自增,自减
> set key 18
OK
> set age 18
OK
> incr age
(integer) 19
> incrby age 5
>(integer) 24
> decr age
(integer) 23
> decrby age 5
(integer) 18
> incrbyfloat age 1.5
19.5

批量操作
> mset key1 value1 key2 value2 key3 value3
OK
> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"


value字符串操作

> set str 'hello world'
OK
> setrange str 6 redis
11
> get str
"hello redis"
> strlen str
(integer) 11
> append str 'v2.0'
15
> get str
>"hello redisv2.0"
> getrange str 0 -1
"hello redisv2.0"
> getrange str 0 5
"hello "
> getrange str -4 -1
"v2.0"

2.2 List列表操作

2.2.1 增加,取出元素
LPUSH key value [value...]
将一个或多个值value插入到列表key的头部

LPUSHX key value
将值value插入到列表表头,当且仅当key存在并且是一个列表

LPOP key
移除并返回列表key的头元素

RPUSH kye value [value...]
将一个或多个值value插入到列表key的尾部

RPUSHX
将值value插入到列表key的表尾,当且仅当key存在并且是一个列表

RPOP
移除并返回列表key的微元素
2.2.2 value操作
LSET key index value
将列表key下标为index的元素值设置为value

LTRIM key start stop
让列表保留制定区间内的元素,不在指定区间的元素被删除

LREM key count value
根据参数count的值,移出列表中与参数value相等的元素

LRANGE key start stop
返回列表元素中指定区间内的元素

LLEN key
返回列表key的长度

LINSERT key BEFORE|AFTER pivot value
将值 value插入到列表key当中,位于值pivot之前或之后。

LINDEX key index
返回列表key中,下标为index的
2.2.3 阻塞
BLPOP key [key ...] timeout
列表阻塞式的弹出

BRPOP key [key ...] timeout
BRPOP 是列表的阻塞式(blocking)弹出原语。

2.2.4 特性
RPOPLPUSH source destination

BRPOPLPUSH source destination timeout
2.2.5 操作
右边进左边出:队列
右边进右边出:栈

增加,取出元素:
> lpush list value1
(integer) 3
> del list
(integer) 0
> lpush list value1 value2
(integer) 2
> rpush list value3 value4
(integer) 4
> lrange list 0 -1
1) "value2"
2) "value1"
3) "value3"
4) "value4"

value操作

2.3 hash

2.3.1 设值取值
HSET key field value
将Hash表key中的field的值设置value。

HMSET key field value [field value ...]
同时将多个field-value(域-值)对设置到哈希表key中

HGET key field
返回哈希表 key 中给定域 field 的值。

HGETALL key
返回哈希表 key 中,所有的域和值。

HVALS key
返回哈希表key中所有域的值。

HKEYS key
返回哈希表key中的所有域。
2.3.2 其他操作
HDEL key field [field ...]
删除哈希表key中的一个或多个指定域,不存在的域将被忽略。

HEXISTS key field
查看哈希表key中,给定域 field 是否存在。

HLEN key
返回哈希表 key 中域的数量。

2.4 set集合

2.4.1 添加 移除,遍历 基础操作
SADD key member [member ...]
将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。

SPOP key
移除并返回集合中的一个随机元素。

SREM key member [member ...]
移除集合key中的一个和多个元素

SMEMBERS key
返回集合 key 中的所有成员。

SCARD key
返回集合 key 的基数(集合中元素的数量)。

SISMEMBER key member
判断 member 元素是否集合 key 的成员。

2.4.2 集合操作

SDIFF key [ksy1...]
返回集合key的差集

SDIFFSTORE destination key [key ...]
返回集合key的差集并将结果保留在destinatio集合

SINTER key [key ...]
返回集合key的交集

SINTERSTORE destination key [key ...]
返回集合key的交集并将结果赋给destination

SMOVE source destination member
将member元素从source集合移动到destination集合

SRANDMEMBER key [count]
返回集合key里面的一个随机数

SUNION key [key ...]
返回结合key的全集

SUNIONSTORE destination key [key ...]
返回结合key的全集并将结果赋给destination

2.5 zset集合

2.5.1 添加 移除,遍历 基础操作
ZADD key score member [[score member] [score member] ...]
将一个或多个 member元素及其score值加入到有序集key当中。


ZCARD key
返回有序集 key的基数。

ZCOUNT key min max
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
15天前
|
XML JSON NoSQL
Redis的常用数据结构之字符串类型
Redis的常用数据结构之字符串类型
19 0
|
22天前
|
存储 消息中间件 NoSQL
Redis数据类型详解:选择合适的数据结构优化你的应用
Redis数据类型详解:选择合适的数据结构优化你的应用
|
27天前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
44 0
|
20小时前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
10 1
|
20小时前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
|
20小时前
|
存储 NoSQL 安全
Redis入门到通关之Redis数据结构-String篇
Redis入门到通关之Redis数据结构-String篇
|
20小时前
|
存储 NoSQL Redis
Redis入门到通关之数据结构解析-SkipList
Redis入门到通关之数据结构解析-SkipList
|
20小时前
|
存储 NoSQL 安全
Redis入门到通关之数据结构解析-动态字符串SDS
Redis入门到通关之数据结构解析-动态字符串SDS
|
20小时前
|
存储 NoSQL Java
Redis入门到通关之数据结构解析-Dict
Redis入门到通关之数据结构解析-Dict
|
27天前
|
存储 NoSQL Redis
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(三)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
29 0