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.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.3 集合(Sets)类型
Redis能够将一系列不重复的值存储成一个集合
redis 127.0.0.1:6379> HMSET kid name Akshi age 2 sex Female OK
redis 127.0.0.1:6379> HMGET kid name age sex 1) "Akshi" 2) "2" 3) "Female" 3.Publish/Subscribe
Redis支持这样一种特性,你可以将数据推到某个信息管道中,然后其它人可以通过订阅这些管道来获取推送过来的信息。
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> TTL name (integer) -1
下面命令先用EXISTS命令查看key值是否存在,然后设置了5秒的过期时间
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> EXISTS name (integer) 1 redis 127.0.0.1:6379> EXPIRE name 5 (integer) 1
5秒后再查看
redis 127.0.0.1:6379> EXISTS name (integer) 0 redis 127.0.0.1:6379> GET name (nil)
这个值已经没有了。
上在是直接设置多少秒后过期,你也可以设置在某个时间点过期,下面例子是设置2011-09-24 00:40:00过期。
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> EXPIREAT name 1316805000 (integer) 1
redis 127.0.0.1:6379> EXISTS name (integer) 0 5.事务性
Redis本身支持一些简单的组合型的命令,比如以NX结尾命令都是判断在这个值没有时才进行某个命令。
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SETNX name "Dexter Morgan" (integer) 0
redis 127.0.0.1:6379> GET name "John Doe"
redis 127.0.0.1:6379> GETSET name "Dexter Morgan" "John Doe"
redis 127.0.0.1:6379> GET name "Dexter Morgan"
当然,Redis还支持自定义的命令组合,通过MULTI和EXEC,将几个命令组合起来执行
redis 127.0.0.1:6379> SET counter 0 OK
redis 127.0.0.1:6379> MULTI OK
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> EXEC 1) (integer) 1 2) (integer) 2 3) (integer) 3
redis 127.0.0.1:6379> GET counter "3"
你还可以用DICARD命令来中断执行中的命令序列
redis 127.0.0.1:6379> SET newcounter 0 OK
redis 127.0.0.1:6379> MULTI OK
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> DISCARD OK
redis 127.0.0.1:6379> GET newcounter "0" 6.持久化
Redis的所有数据都存储在内存中,但是他也提供对这些数据的持久化。
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SAVE OK
redis 127.0.0.1:6379> SET name "Sheldon Cooper" OK
redis 127.0.0.1:6379> BGSAVE Background saving started
如果你是使用的brew在Mac OSX上安全的Redis,那么rdb文件会存在如下路径
/usr/local/var/db/redis/dump.rdb 6.2 Append-Only File(追加式的操作日志记录)
Redis还支持一种追加式的操作日志记录,叫append only file,其日志文件以aof结局,我们一般各为aof文件。要开启aof日志的记录,你需要在配置文件中进行如下设置:
appendonly yes
这时候你所有的操作都会记录在aof日志文件中
redis 127.0.0.1:6379> GET name (nil)
redis 127.0.0.1:6379> SET name "Ganesh Gunasegaran" OK
redis 127.0.0.1:6379> EXIT → cat /usr/local/var/db/redis/appendonly.aof *2 $6 SELECT $1 0 *3 $3 SET $4 name $18 Ganesh Gunasegaran 7.管理命令
Redis支持多个DB,默认是16个,你可以设置将数据存在哪一个DB中,不同DB间的数据具有隔离性。也可以在多个DB间移动数据。
redis 127.0.0.1:6379> SELECT 0 OK
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SELECT 1 OK
redis 127.0.0.1:6379[1]> GET name (nil)
redis 127.0.0.1:6379[1]> SELECT 0 OK
redis 127.0.0.1:6379> MOVE name 1 (integer) 1
redis 127.0.0.1:6379> SELECT 1 OK
redis 127.0.0.1:6379[1]> GET name "John Doe"
Redis还能进行一些如下操作,获取一些运行信息
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.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.3 集合(Sets)类型
Redis能够将一系列不重复的值存储成一个集合
redis 127.0.0.1:6379> HMSET kid name Akshi age 2 sex Female OK
redis 127.0.0.1:6379> HMGET kid name age sex 1) "Akshi" 2) "2" 3) "Female" 3.Publish/Subscribe
Redis支持这样一种特性,你可以将数据推到某个信息管道中,然后其它人可以通过订阅这些管道来获取推送过来的信息。
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> TTL name (integer) -1
下面命令先用EXISTS命令查看key值是否存在,然后设置了5秒的过期时间
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> EXISTS name (integer) 1 redis 127.0.0.1:6379> EXPIRE name 5 (integer) 1
5秒后再查看
redis 127.0.0.1:6379> EXISTS name (integer) 0 redis 127.0.0.1:6379> GET name (nil)
这个值已经没有了。
上在是直接设置多少秒后过期,你也可以设置在某个时间点过期,下面例子是设置2011-09-24 00:40:00过期。
redis 127.0.0.1:6379> SET name "John Doe" OK redis 127.0.0.1:6379> EXPIREAT name 1316805000 (integer) 1
redis 127.0.0.1:6379> EXISTS name (integer) 0 5.事务性
Redis本身支持一些简单的组合型的命令,比如以NX结尾命令都是判断在这个值没有时才进行某个命令。
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SETNX name "Dexter Morgan" (integer) 0
redis 127.0.0.1:6379> GET name "John Doe"
redis 127.0.0.1:6379> GETSET name "Dexter Morgan" "John Doe"
redis 127.0.0.1:6379> GET name "Dexter Morgan"
当然,Redis还支持自定义的命令组合,通过MULTI和EXEC,将几个命令组合起来执行
redis 127.0.0.1:6379> SET counter 0 OK
redis 127.0.0.1:6379> MULTI OK
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> INCR counter QUEUED
redis 127.0.0.1:6379> EXEC 1) (integer) 1 2) (integer) 2 3) (integer) 3
redis 127.0.0.1:6379> GET counter "3"
你还可以用DICARD命令来中断执行中的命令序列
redis 127.0.0.1:6379> SET newcounter 0 OK
redis 127.0.0.1:6379> MULTI OK
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> INCR newcounter QUEUED
redis 127.0.0.1:6379> DISCARD OK
redis 127.0.0.1:6379> GET newcounter "0" 6.持久化
Redis的所有数据都存储在内存中,但是他也提供对这些数据的持久化。
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SAVE OK
redis 127.0.0.1:6379> SET name "Sheldon Cooper" OK
redis 127.0.0.1:6379> BGSAVE Background saving started
如果你是使用的brew在Mac OSX上安全的Redis,那么rdb文件会存在如下路径
/usr/local/var/db/redis/dump.rdb 6.2 Append-Only File(追加式的操作日志记录)
Redis还支持一种追加式的操作日志记录,叫append only file,其日志文件以aof结局,我们一般各为aof文件。要开启aof日志的记录,你需要在配置文件中进行如下设置:
appendonly yes
这时候你所有的操作都会记录在aof日志文件中
redis 127.0.0.1:6379> GET name (nil)
redis 127.0.0.1:6379> SET name "Ganesh Gunasegaran" OK
redis 127.0.0.1:6379> EXIT → cat /usr/local/var/db/redis/appendonly.aof *2 $6 SELECT $1 0 *3 $3 SET $4 name $18 Ganesh Gunasegaran 7.管理命令
Redis支持多个DB,默认是16个,你可以设置将数据存在哪一个DB中,不同DB间的数据具有隔离性。也可以在多个DB间移动数据。
redis 127.0.0.1:6379> SELECT 0 OK
redis 127.0.0.1:6379> SET name "John Doe" OK
redis 127.0.0.1:6379> SELECT 1 OK
redis 127.0.0.1:6379[1]> GET name (nil)
redis 127.0.0.1:6379[1]> SELECT 0 OK
redis 127.0.0.1:6379> MOVE name 1 (integer) 1
redis 127.0.0.1:6379> SELECT 1 OK
redis 127.0.0.1:6379[1]> GET name "John Doe"
Redis还能进行一些如下操作,获取一些运行信息