主页 > 知识库 > 数据库 > 数据库综合 >

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

来源: 作者: 发表于:2012-06-09 03:32  点击:
虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。 一、介绍 1、Redis是什么 REmote DIctionary Server(Redis)

   虽然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"




  3、集合(Sets)类型

  Redis能够将一系列不重复的值存储成一个集合:


 

redis 127.0.0.1:6379> SADD birds crow
   
 (integer) 1
   
 redis 127.0.0.1:6379> SADD birds pigeon
   
 (integer) 1
   
 redis 127.0.0.1:6379> SADD birds bat
   
 (integer) 1
   
 redis 127.0.0.1:6379> SADD mammals dog
   
 (integer) 1
   
 redis 127.0.0.1:6379> SADD mammals cat
   
 (integer) 1
   
 redis 127.0.0.1:6379> SADD mammals bat
   
 (integer) 1
   
 redis 127.0.0.1:6379> SMEMBERS birds
   
 1) "bat"
   
 2) "crow"
   
 3) "pigeon"
   
 redis 127.0.0.1:6379> SMEMBERS mammals
   
 1) "bat"
   
 2) "cat"
   
 3) "dog"


有帮助
(1)
100%
没帮助
(0)
0%