Redis-2-数据类型与常用命令

reids中的数据类型

redis中的数据都是以key-value的形式存储的,数据类型其实是说value的数据类型,一共有以下几种数据类型:

String(字符串)

String是redis中的最基本的数据类型,string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象, string 类型的值最大能存储 512MB

List(列表)

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

Hash(哈希)

Hash类似于Java中的Map,是一个键值对集合,特别适合用于存储对象

Set(集合)

Set是String类型的无序集合,而且Set里面的元素是不可重复的

zset(sorted set:有序集合)

zset 和 Set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复.

常用命令

由于五大数据类型的数据结构本身有差异,因此对应的命令也会不同,但是有一些命令不管对于哪种数据类型都是存在的,下面就先来看下这些常用的命令

首先,按上篇文章中的连接方式,连接到redis

set命令

用来添加一条数据进去:

1
2
172.16.12.3:6379> set testKey testValue
OK

OK就表示添加成功了

del命令

通过del命令可以删除一个已存在的数据,比如我们要删除刚才添加的那条数据,命令如下:

1
2
172.16.12.3:6379> del testKey
(integer) 1

(integer) 1,就表示删除成功了

dump命令

dump 命令可以序列化指定的数据,并返回序列化后的值

先添加一条数据进去,还是用set命令,然后用dump命令去序列化,如下:

1
2
172.16.12.3:6379> dump testKey
"\x00\ttestValue\a\x00-|$\xb4Y\xc3|("

exists命令

exists命令,用来判断数据是否存在,具体使用方式如下:

1
2
3
4
172.16.12.3:6379> exists testKey
(integer) 1
172.16.12.3:6379> exists testKey1
(integer) 0

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

ttl命令

ttl命令可以查看数据的有效时间,使用方式如下:

1
2
3
4
172.16.12.3:6379> ttl testKey
(integer) -1
172.16.12.3:6379> ttl testKey1
(integer) -2

返回-1表示key存在并且没有设置过期时间(永久有效)

返回-2表示key不存在或者已过期

pttl命令

和ttl命令基本一样,只不过返回的是毫秒数

1
2
172.16.12.3:6379> pttl testKey
(integer) 83823

expire命令

expire命令可以给key设置有效时间,在有效期过后,key会被销毁

1
2
3
4
172.16.12.3:6379> expire testKey 30
(integer) 1
172.16.12.3:6379> ttl testKey
(integer) 25

30表示设置30秒的有效时间,返回1表示设置成功, 然后通过ttl去查询有效时间,返回25,表示有效期还剩25秒

pexpire命令

和expire命令的功能一样,只不过设置时间的参数是毫秒

1
2
172.16.12.3:6379> pexpire testKey 100000
(integer) 1

persist命令

persist命令,可以移除一个key的过期时间,这样这个key就永远不会过期

1
2
3
4
172.16.12.3:6379> expire testKey 100
(integer) 1
172.16.12.3:6379> persist testKey
(integer) 1

keys命令

keys命令可以获取所有满足条件的key,比如下面的这个命令:

1
2
3
172.16.12.3:6379> keys *
1) "testKey1"
2) "testKey"

*表示所有,这里的*可以换成一个正则表达式,也就是返回所有的符合这个正则表达式的key.