技术开发 频道

Redis入门教程:特性及数据类型的操作

        【IT168 技术】虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。

  一、介绍

  1、Redis是什么

  REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。

  2、Redis的优点

  性能极高 – Redis能支持超过 100K+ 每秒的读写频率。

  丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

  原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

  丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

  二、数据类型

  1、String类型

  Redis能存储二进制安全的字符串,最大长度为1GB

  redis 127.0.0.1:6379> SET name "John Doe"

  OK

  redis
127.0.0.1:6379> GET name

  "John Doe"

  String类型还支持批量的读写操作

  redis 127.0.0.1:6379> MSET age 30 sex "male"

  OK

  redis
127.0.0.1:6379> MGET age sex

  
1) "30"

  
2) "male"

  String类型其实也可以用来存储数字,并支持对数字的加减操作。

  redis 127.0.0.1:6379> INCR age

  (
integer) 31

  redis
127.0.0.1:6379> INCRBY age 4

  (
integer) 35

  redis
127.0.0.1:6379> GET age

  "
35"

  redis
127.0.0.1:6379> DECR age

  (
integer) 34

  redis
127.0.0.1:6379> DECRBY age 4

  (
integer) 30

  redis
127.0.0.1:6379> GET age

  "
30"

  String类型还支持对其部分的修改和获取操作

  redis 127.0.0.1:6379> APPEND name " Mr."

  (
integer) 12

  redis
127.0.0.1:6379> GET name

  "John Doe Mr."

  redis
127.0.0.1:6379> STRLEN name

  (
integer) 12

  redis
127.0.0.1:6379> SUBSTR name 0 3

  "John"

  2、List类型

  Redis能够将数据存储成一个链表,并能对这个链表进行丰富的操作:

  redis 127.0.0.1:6379> LPUSH students "John Doe"

  (
integer) 1

  redis
127.0.0.1:6379> LPUSH students "Captain Kirk"

  (
integer) 2

  redis
127.0.0.1:6379> LPUSH students "Sheldon Cooper"

  (
integer) 3

  redis
127.0.0.1:6379> LLEN students

  (
integer) 3

  redis
127.0.0.1:6379> LRANGE students 0 2

  
1) "Sheldon Cooper"

  
2) "Captain Kirk"

  
3) "John Doe"

  redis
127.0.0.1:6379> LPOP students

  "Sheldon Cooper"

  redis
127.0.0.1:6379> LLEN students

  (
integer) 2

  redis
127.0.0.1:6379> LRANGE students 0 1

  
1) "Captain Kirk"

  
2) "John Doe"

  redis
127.0.0.1:6379> LREM students 1 "John Doe"

  (
integer) 1

  redis
127.0.0.1:6379> LLEN students

  (
integer) 1

  redis
127.0.0.1:6379> LRANGE students 0 0

  
1) "Captain Kirk"

  Redis也支持很多修改操作:

  redis 127.0.0.1:6379> LINSERT students BEFORE "Captain Kirk" "Dexter Morgan"

  (
integer) 3

  redis
127.0.0.1:6379> LRANGE students 0 2

  
1) "Dexter Morgan"

  
2) "Captain Kirk"

  
3) "John Doe"

  redis
127.0.0.1:6379> LPUSH students "Peter Parker"

  (
integer) 4

  redis
127.0.0.1:6379> LRANGE students 0 3

  
1) "Peter Parker"

  
2) "Dexter Morgan"

  
3) "Captain Kirk"

  
4) "John Doe"

  redis
127.0.0.1:6379> LTRIM students 1 3

  OK

  redis
127.0.0.1:6379> LLEN students

  (
integer) 3

  redis
127.0.0.1:6379> LRANGE students 0 2

  
1) "Dexter Morgan"

  
2) "Captain Kirk"

  
3) "John Doe"

  redis
127.0.0.1:6379> LREM students 1 "John Doe"

  (
integer) 1

  redis
127.0.0.1:6379> LLEN students

  (
integer) 1

  redis
127.0.0.1:6379> LRANGE students 0 1

  
1) "Captain Kirk"
2
相关文章