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
2172.16.12.3:6379> set testKey testValue
OK
OK就表示添加成功了
del命令
通过del命令可以删除一个已存在的数据,比如我们要删除刚才添加的那条数据,命令如下:1
2172.16.12.3:6379> del testKey
(integer) 1
(integer) 1,就表示删除成功了
dump命令
dump 命令可以序列化指定的数据,并返回序列化后的值
先添加一条数据进去,还是用set命令,然后用dump命令去序列化,如下:1
2172.16.12.3:6379> dump testKey
"\x00\ttestValue\a\x00-|$\xb4Y\xc3|("
exists命令
exists命令,用来判断数据是否存在,具体使用方式如下:1
2
3
4172.16.12.3:6379> exists testKey
(integer) 1
172.16.12.3:6379> exists testKey1
(integer) 0
1表示存在,0表示不存在
ttl命令
ttl命令可以查看数据的有效时间,使用方式如下:1
2
3
4172.16.12.3:6379> ttl testKey
(integer) -1
172.16.12.3:6379> ttl testKey1
(integer) -2
返回-1表示key存在并且没有设置过期时间(永久有效)
返回-2表示key不存在或者已过期
pttl命令
和ttl命令基本一样,只不过返回的是毫秒数1
2172.16.12.3:6379> pttl testKey
(integer) 83823
expire命令
expire命令可以给key设置有效时间,在有效期过后,key会被销毁1
2
3
4172.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
2172.16.12.3:6379> pexpire testKey 100000
(integer) 1
persist命令
persist命令,可以移除一个key的过期时间,这样这个key就永远不会过期1
2
3
4172.16.12.3:6379> expire testKey 100
(integer) 1
172.16.12.3:6379> persist testKey
(integer) 1
keys命令
keys命令可以获取所有满足条件的key,比如下面的这个命令:1
2
3172.16.12.3:6379> keys *
1) "testKey1"
2) "testKey"
*
表示所有,这里的*
可以换成一个正则表达式,也就是返回所有的符合这个正则表达式的key.