这是redis序列文章的第一篇,这个序列估计写两到三篇文章吧,主要是总结一下redis的基础操作,redis一些高级特性,redis集群,以及同其他缓存组件memcache的对比。
第一篇主要写redis一些基本的数据结构以及对应的操作。
String类型
String类型是典型的key-val形式,主要操作命令有GET SET STRLEN MGET MSET INCR INCRBY
1 MSET name 'cxt' age '24'
1 MSET name 'cxt' age '24'
Hash(哈希表)
哈希表结构为# key field1 val1 field2 val2 ...
常见的操作有# HSET HGET HGETALL
LIST类型
双向链表,主要的操作有LRANGE LPUSH LPOP RPUSH RPOP LREM
SET(集合)#
SET集合,元素不能够重复,主要操作有:SMEMBERS SADD SCARD SREM SPOP
ZSET(有序的集合)
ZSET是有序的,数据结构为key member1 score1 member2 score2 ...
排序的规则主要和score的值大小有关,小的在前面,大的排在后面,score可以接受负数,浮点数。
主要的操作有ZADD ZRANGE ZREM ZCARD
1 ZADD key score1 member1 score2 member2 ...
1 ZRANGE key 0 -1 WITHSCORES
1 ZREM key member1 member2 ...
事务
redis是支持事务操作的,下面结合一个例子说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 127.0 .0.1 :6379 > SET userid 0 OK 127.0 .0.1 :6379 > MULTIOK 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > pingQUEUED 127.0 .0.1 :6379 > DISCARDOK 127.0 .0.1 :6379 > GET userid"0"
该例子主要先设置一个key-val为userid-0,MULTI
是开始事务的标志,然后执行三个INCR
自增的操作,接着向服务器发现一个PING
,这四个操作都在排队,然后执行DISCARD
终止了事务的执行,通过GET userid
我们可以看到userid没有变化,还是0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 127.0 .0.1 :6379 > GET userid"0" 127.0 .0.1 :6379 > MULTIOK 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > PINGQUEUED 127.0 .0.1 :6379 > EXEC1 ) (integer ) 1 2 ) (integer ) 2 3 ) PONG127.0 .0.1 :6379 > GET userid"2"
这个case前面几个命令都一样,不过第11行是EXEC
也就是执行了事务,我们可以看到GET userid
的结果为2。
WATCH
命令,用法WATCH key
监视某一个key,当执行事务时,有其他操作改动了key,事务会失效。
1 2 3 4 5 6 7 8 9 10 11 12 127.0 .0.1 :6379 > GET userid "0" 127.0 .0.1 :6379 > WATCH useridOK 127.0 .0.1 :6379 > MULTIOK 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > INCR useridQUEUED 127.0 .0.1 :6379 > pingQUEUED
然后在另一个命令行执行下面的操作:
1 2 127.0 .0.1 :6379 > INCR userid(integer ) 1
回到前面的命令行执行事务,我们可以发现事务执行失败!
1 2 3 4 127.0 .0.1 :6379 > EXEC(nil) 127.0 .0.1 :6379 > GET userid"1"
UNWATCH
命令,用法直接执行UNWATCH
即可,就放弃对监视的key的监视。
上面就简单介绍了redis的基础操作,我们还可以借助客户端Redis Desktop Manager进行学习,图形化的更加直观。
完~