Redis简介和数据类型

简介

Redis是完全开源(BSD许可)的内存数据**结构存储,**是一个高性能的 key-value 数据库,用作数据库、缓存、消息代理和流式处理引擎。

Redis 提供数据结构,例如字符串哈希列表、集、带有范围查询的排序集位图超日志地理空间索引。 Redis 具有内置复制、Lua 脚本LRU 逐出事务和不同级别的磁盘持久性,并通过 Redis Sentinel 和 Redis 集群的自动分区提供高可用性。

Redis使用内存中数据集。

Redis与其他key-value缓存产品有三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis数据类型

连接到redis

复制代码
redis-ci -h 127.0.0.1 -p 6379

进入后

连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启.

复制代码
redis 127.0.0.1:6379>PING
PONG

String(字符串)

存储和检索数据

设置和获取字符串值:

复制代码
SET bike:1 "Process 134"

使用Redis的SET命令,设置了键为bike:1,值为"Process 134"的数据

复制代码
GET bike:1

查看bike:1这个键对应的值

输出:"Process 134"

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

设置和访问对象的字段值:

复制代码
> HSET bike:1 model Deimos brand Ergonom type 'Enduro bikes' price 4972
(integer) 4
> HGET bike:1 model
"Deimos"
> HGET bike:1 price
"4972"
> HGETALL bike:1
1) "model"
2) "Deimos"
3) "brand"
4) "Ergonom"
5) "type"
6) "Enduro bikes"
7) "price"
8) "4972"

HSET bike:1 model Deimos brand Ergonom type 'Enduro bikes' price 4972

给bike:1这个键添加值

HGET bike:1 model // 输出bike:1 model对应的值

HGET bike:1 price //输出bike:1 price对应的值

HGETALL bike:1 //输出bike:1 所有的键值对

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

复制代码
HMSET runoob field1 "Hello" field2 "World"

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabbitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
复制代码

Set(集合)

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

sadd 命令

添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。

复制代码
sadd key member

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabbitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabbitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob

1) "redis"
2) "rabbitmq"
3) "mongodb"

rabbitmq由于添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

zadd 命令

添加元素到集合,元素在集合中存在则更新对应score

复制代码
zadd key score member 

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabbitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabbitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabbitmq"
3) "redis"
相关推荐
2301_814590253 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
独断万古他化8 分钟前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
VALENIAN瓦伦尼安教学设备14 分钟前
设备对中不良的危害
数据库·嵌入式硬件·算法
yyt36304584115 分钟前
spring单例bean线程安全问题讨论
java·spring
小兔崽子去哪了25 分钟前
Docker 安装 PostgreSQL
数据库·后端·postgresql
野犬寒鸦29 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
我是大猴子35 分钟前
事务失效的几种情况以及是为什么(详解)
java·开发语言
mldlds1 小时前
Windows安装Redis图文教程
数据库·windows·redis
Nyarlathotep01131 小时前
Redis的对象(5):有序集合对象
redis·后端
feng68_1 小时前
Redis架构实践
linux·运维·redis·架构·bootstrap