首页 > 代码库 > 初识redis
初识redis
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‘OKredis localhost:6007> get test"test"
del:删除某个key,特别注意如果某个key不存在,用命令行get时会返回nil
redis localhost:6007> del test(integer) 1redis 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) -1redis localhost:6007> set test ‘test‘OKredis localhost:6007> ttl test(integer) -1redis localhost:6007> get test"test"
expire:设置key的过期时间
redis localhost:6007> expire test 100(integer) 1redis localhost:6007> ttl test(integer) 98
mget:获取多个key对应的value
redis localhost:6007> mget test test11) "test"2) "test1"
decr:自减1
redis localhost:6007> decr test(error) ERR value is not an integer or out of rangeredis localhost:6007> set test 3OKredis localhost:6007> decr test(integer) 2
incr:自增1
redis localhost:6007> incr test(integer) 3redis localhost:6007> get test"3"
append:字符串追加
redis localhost:6007> append test ‘test‘(integer) 5redis localhost:6007> get test"3test"
上面所有的可归结于字符串操作,可以看到redis支持string类型,以及set,list,zset,hash类型
list操作:数组,下表为0,1,2,3....
redis localhost:6007> lset list 0 ‘list0‘(error) ERR no such keyredis localhost:6007> lpush list ‘list0‘(integer) 1redis localhost:6007> lget list(error) ERR unknown command ‘lget‘redis localhost:6007> lrange list 0 11) "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 01) "list0"redis localhost:6007> lpush list ‘list1‘(integer) 2redis localhost:6007> lrange list 0 11) "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