Redis 对象的使用

一、概述


Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持五种数据类型:字符串(STRING)、列表(LIST)、集合(SET)、散列表(HASH)、有序集合(ZSET)。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。

Redis 性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s

Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

二、五种数据类型


å¨è¿éæå¥å¾çæè¿°

Redis数据库中的每个键值对都是由对象组成的,其中:

  • 数据库键总是一个字符串对象(string object)
  • 数据库键的值则可以是字符串对象、列表对象(list object)、哈希对象(hash object)、集合对象(set object)、有序集合对象(sorted set object) 这五个对象其中的一种。

String
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。一个键最大存储也是 512MB。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据不出现错误,比如保存jpg图片或者序列化的对象。

比如C语言的char数组就不能保存任何数据,如果数据中包含\0,则会错误地认为字符串结束,即不是二进制安全的。

> set hello world
OK
> get hello
"world"
> del hello
(integer) 1
> get hello
(nil)

List

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

列表最多可存储 2的32次方 - 1 个元素 (4294967295, 每个列表可存储40多亿)。

127.0.0.1:6379> lpush ooc a
(integer) 1
127.0.0.1:6379> lpush ooc b
(integer) 2
127.0.0.1:6379> rpush ooc c
(integer) 3
127.0.0.1:6379> lrange ooc 0 2
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> lrange ooc 0 -1
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> lindex ooc 2
"c"
127.0.0.1:6379> lpop ooc
"b"
127.0.0.1:6379> lrange ooc 0 -1
1) "a"
2) "c"
127.0.0.1:6379> rpop ooc
"c"
127.0.0.1:6379> lrange ooc 0 -1
1) "a"

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

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

sadd 命令添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
 

> sadd set-key item
(integer) 1
> sadd set-key item2
(integer) 1
> sadd set-key item3
(integer) 1
> sadd set-key item
(integer) 0

> smembers set-key
1) "item"
2) "item2"
3) "item3"

> sismember set-key item4
(integer) 0
> sismember set-key item
(integer) 1

> srem set-key item2   # 删除元素
(integer) 1
> srem set-key item2
(integer) 0

> smembers set-key
1) "item"
2) "item3"

Hash

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

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

每个 hash 可以存储 232 -1 键值对(40多亿)。

> hset hash-key sub-key1 value1
(integer) 1
> hset hash-key sub-key2 value2
(integer) 1
> hset hash-key sub-key1 value1
(integer) 0

> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"

> hdel hash-key sub-key2
(integer) 1
> hdel hash-key sub-key2
(integer) 0

> hget hash-key sub-key1
"value1"

> hgetall hash-key
1) "sub-key1"
2) "value1"

Zset (sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

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

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

> zadd zset-key 728 member1   # zadd key score member 
(integer) 1
> zadd zset-key 982 member0
(integer) 1
> zadd zset-key 982 member0
(integer) 0

> zrange zset-key 0 -1 withscores  # 取出 0 到 n ,(按分数第几个)
1) "member1"
2) "728"
3) "member0"
4) "982"

> zrangebyscore zset-key 0 800 withscores  # 取出分数 0 到 800
1) "member1"
2) "728"

> zrem zset-key member1  # 删除
(integer) 1
> zrem zset-key member1
(integer) 0

> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"


 

原文:https://blog.csdn.net/ooc_zc/article/details/89228505 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值