0
点赞
收藏
分享

微信扫一扫

Redis教程02(五大数据类型简介)

Redis教程02(五大数据类型简介)_list

Redis中的五大数据类型

在上篇文章中我们介绍了Redis在Linux中的安装

Redis教程01(linux环境下安装)

本文给大家介绍下Redis中的五大数据类型
Redis中的数据都是key/value对,这里的数据类型指的是value的值的类型

数据类型

说明

String

是Redis中最基本的数据类型,二进制安全的,它可以包含任意数据类型。如图片。Redis中String类型的数据上限的512M。

List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

Hash

是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

Set

Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

ZSet

有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

启动redis服务并登录客户端
Redis教程02(五大数据类型简介)_list_02

通用命令

五种数据类型的数据的结构差异所以命令也不尽相同,但是还是有一些相通的命令。所以此处先介绍下通用命令

创建一个简单的k/v对

127.0.0.1:6379> set name dpb
OK

在redis中,默认一共有16个数据库,编号为0-15,正常情况下,用户登录成功后,首先看到的是0号库,可以手动切换为其他库,使用

SELECT

127.0.0.1:6380> set name zhangsan
OK
127.0.0.1:6380> select 4
OK
127.0.0.1:6380[4]> get name
(nil)
127.0.0.1:6380[4]> select 0
OK
127.0.0.1:6380> get name
"zhangsan"

DEL命令

该命令用于在 key 存在时删除 key。

127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> del name
(integer) 0

返回数字表示删除的记录数

DUMP命令

序列化给定 key ,并返回被序列化的值。

127.0.0.1:6379> dump name
"\x00\x03dpb\t\x00\xe5\xa2\xc4\xd1\xfc\xb2\xd9\xcb"
127.0.0.1:6379> dump name1
(nil)

如果key不存在返回nil

EXISTS命令

检查key是否存在

127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0

1表示存在,0表示不存在

TTL命令

以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> ttl name1
(integer) -2

-2表示key不存在,-1表示没有设置有效时间,不会过期,我们可以通过EXPIRE key 设置有效时间

EXPIRE

是指有效时间,单位秒

127.0.0.1:6379> expire name 120
(integer) 1
127.0.0.1:6379> ttl name
(integer) 112
127.0.0.1:6379> ttl name
(integer) 10
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) -2

112是剩余的有效时间。

PEXPIRE命令

同样是设置过期时间,只是单位是毫秒

127.0.0.1:6379> pexpire name 100
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2

100毫秒比较短暂,-2表示已经不存在了。

PTTL

和ttl命令一样,只是返回单位是毫秒

127.0.0.1:6379> pexpire name 100000
(integer) 1
127.0.0.1:6379> ttl name
(integer) 91
127.0.0.1:6379> pttl name
(integer) 84601

KEYS

通过正则表达式查找符合条件的key

127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set sex 男
OK
127.0.0.1:6379> set address 深圳
OK
127.0.0.1:6379> keys *
1) "age"
2) "address"
3) "sex"

keys * 查询所有的key

RANDOMKEY

从当前数据库中随机返回一个key

127.0.0.1:6379> randomkey
"address"
127.0.0.1:6379> randomkey
"age"
127.0.0.1:6379> randomkey
"sex"
127.0.0.1:6379> randomkey
"age"

TYPE命令

返回key对应的数据类型

127.0.0.1:6379> type name
none
127.0.0.1:6379> type age
string
127.0.0.1:6379> type sex
string

不存在返回的是none

RENAME

修改key的名称

127.0.0.1:6379> rename age age1
OK
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> exists age1
(integer) 1

flushdb

清空当前库

127.0.0.1:6380> keys *
1) "name"
127.0.0.1:6380> flushdb
OK
127.0.0.1:6380> keys *
(empty list or set)
127.0.0.1:6380>

flushall

清空所有库

~通用相关的命令就介绍这么多,更多详见官网:http://www.redis.cn/commands.html


举报

相关推荐

0 条评论