码迷,mamicode.com
首页 > 其他好文 > 详细

初识redis

时间:2014-08-16 23:41:01      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

redis是个存储服务,能够支持k-v等结构,数据能落地(memcache的数据是内存数据,无法落地)

下面进入redis的世界来一探究竟。

命令行进入redis:

用ps aux | grep redis看下redis-server是否开启,对应的端口号是多少。

/usr/local/redis26/redis-server /usr/local/redis26/6007.conf

redis命令行连6007端口进入redis

/usr/local/redis26/redis-cli -h localhost -p 6007

常用的几个命令:get(拿key获取value),set(设置key-value对),ttl(查看该key-value的过期时间),keys(查看符合查询条件的key list)

可能会用到的:mget(多个key获取value),hset-hget,incr,decr

某些场景:带排序的SortedSet(这些见参考文件1)

keys:通过查询条件查看key列表,支持*正则,其它正则表示不确定是否支持

redis localhost:6007> keys ST:client:*
1) "ST:client:soft:1"
2) "ST:client:edition:100092983"
3) "ST:client:soft:3"
4) "ST:client:edition:100093524"

keys-2:不存在

redis localhost:6007> keys test
(empty list or set)

set-get:

redis localhost:6007> set test test
OK
redis localhost:6007> get test
"test"

del:删除某个key,特别注意如果某个key不存在,用命令行get时会返回nil

redis localhost:6007> del test
(integer) 1
redis localhost:6007> get test
(nil)

ttl:查看某个key的过期时间。可以看到如果key不存在,则ttl返回-1(与版本有关,2.8之前返回-1,2.8之后返回-2);如果key存在并且永不过期,则ttl返回-1;如果key存在并且设置了过期,则返回key的剩余存活时间

redis localhost:6007> get test
(nil)
redis localhost:6007> ttl test
(integer) -1
redis localhost:6007> set test test
OK
redis localhost:6007> ttl test
(integer) -1
redis localhost:6007> get test
"test"

expire:设置key的过期时间

redis localhost:6007> expire test 100
(integer) 1
redis localhost:6007> ttl test
(integer) 98

mget:获取多个key对应的value

redis localhost:6007> mget test test1
1) "test"
2) "test1"

decr:自减1

redis localhost:6007> decr test
(error) ERR value is not an integer or out of range
redis localhost:6007> set test 3
OK
redis localhost:6007> decr test
(integer) 2

incr:自增1

redis localhost:6007> incr test
(integer) 3
redis localhost:6007> get test
"3"

append:字符串追加

redis localhost:6007> append test test
(integer) 5
redis localhost:6007> get test
"3test"

 上面所有的可归结于字符串操作,可以看到redis支持string类型,以及set,list,zset,hash类型

value类型:string,list,set,zset,hash
list:列表,一维数组,元素可重复
set:无序集合,一维数组,元素不可重复
zset:排序集合,一维数组,有顺序
hash:哈希,关联数组

list操作:数组,下表为0,1,2,3....

redis localhost:6007> lset list 0 list0
(error) ERR no such key
redis localhost:6007> lpush list list0
(integer) 1
redis localhost:6007> lget list
(error) ERR unknown command lget
redis localhost:6007> lrange list 0 1
1) "list0"
解释:
lset:直接用lset是错误的,因为list必须存在才能使用该命令
lpush:往list中添加元素,如果list不存在则创建list并添加元素
lget:没有这个命令
lrange:列出list的指定条目
用法:LRANGE key start stop,start表示起始下标从0开始,stop表示终止下标从0开始,stop不是条目数,而是结尾处的下标值
redis localhost:6007> lrange list 0 0
1) "list0"
redis localhost:6007> lpush list list1
(integer) 2
redis localhost:6007> lrange list 0 1
1) "list1"
2) "list0"

redis localhost:6007> lset list 0 ‘list-new0‘
OK
redis localhost:6007> lrange list 0 1
1) "list-new0"
2) "list0"

 解释:

lrange之前解释过了。

lpush添加元素到list

lset:lset key index value,修改list的某个下标内的值。复杂度为O(1),可见数据结构不是链表

 

reference:

1,http://redis.readthedocs.org/en/latest/

2,关于ttl:http://redis.readthedocs.org/en/latest/key/ttl.html

初识redis,布布扣,bubuko.com

初识redis

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/helww/p/3917030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!