2.redis 数据类型

redis 数据类型

redis基本简介

redis 与 其他key-value缓存产品有以下三个特点:
- redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- redis支持数据的备份,即master-slave模式的数据备份。

redis 数据类型

五大数据类型:

  1. string(字符串)
  • string是redis最基本的数据类型,可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  • string类型是redis最基本的数据类型,string类型的值最大能存储512MB。
  1. hash(哈希)
    redis hash 是一个键值(key=>value)对集合。
    HASH 类似于 Java 中的 Map ,是一个键值对集合,在 redis 中可以用来存储对象。
  2. list(列表)
    redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  3. set(集合)
    redis 的set 是string类型的无序集合。
    集合是通过哈希表实现,所以添加,删除,查找的复杂度都是O(1).
  4. zset(sorted set:有序集合)
    redis zset和set一样也是string类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个double类型的分数。redis正式通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

redis keys命令

我们通过set命令先插入一条数据:

1
2
127.0.0.1:6379> set name zhangsan
OK

del 命令

上面我们看到OK表示成功插入了一条记录。我们可以通过del命令来删除一个已经存在的key。如下:

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

看到(integer)1表示数据删除成功。同时删除多个key,可以使用 del name age sex.

dump 命令

dump命令可以序列化给定的key,并返回序列化之后的值:

1
2
127.0.0.1:6379> dump name
"\x00\bzhangsan\t\x00\xa7\xce\xa1\xe9\xcc\xbeE\xf9"

exists 命令

exists 用来判断指定key是否存在。例如:

1
2
3
4
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists age
(integer) 0

如上述所示,表示key为name 是存在,而 key为age不存在

ttl 命令

ttl命令可以查看一个给定key的有效时间:

1
2
3
4
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> ttl age
(integer) -2

-2 表示key不存在或是已经过期。-1 表示key存在并且没有设置过期时间(永久有效)。当然,我们可以通过下面的命令给key设置一个过期时间。

expire 命令

expire命令可以给key设置一个有效期,有效期过后,该key就会自动被销毁:

1
2
3
4
5
6
7
8
127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> ttl name
(integer) 14
127.0.0.1:6379> ttl name
(integer) 11
127.0.0.1:6379> ttl name
(integer) -2

20表示过期时间为20秒,ttl name 返回14,11. 表示这个key的有效时间还剩下 14秒或11秒。

persist 命令

persist 命令表示移除一个key的过期时间,这样该key就永远不会过期了。

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> expire name 30
(integer) 1
127.0.0.1:6379> ttl name
(integer) 23
127.0.0.1:6379> persist name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -1

pexpire 命令

pexpire 命令的功能和expire命令的功能基本一致,只不过这里设置的参数值是以毫秒为单位的:

1
2
3
4
5
6
127.0.0.1:6379> pexpire name 60000
(integer) 1
127.0.0.1:6379> ttl name
(integer) 55
127.0.0.1:6379> ttl name
(integer) 52

pttl 命令

pttl命令和ttl命令基本一致,但是pttl命令返回的是以毫秒为单位的:

1
2
3
4
5
6
127.0.0.1:6379> pexpire name 60000
(integer) 1
127.0.0.1:6379> pttl name
(integer) 56919
127.0.0.1:6379> pttl name
(integer) 53676

keys 命令

keys命令可以获取满足给定模式所有key,如:

1
2
3
4
5
6
7
127.0.0.1:6379> set name ooyhao
OK
127.0.0.1:6379> set age 23
OK
127.0.0.1:6379> keys *
1) "name"
2) "age"

keys * 表示获取所有的key。* 也可以是一个正则表达式。

关于key相关的常见命令就差不多了,如果需要完整可以移步:http://www.redis.cn/commands.html

部分参考自:http://www.javaboy.org/2019/0615/redis-datatype.html

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×