您的位置:首页 > 数据库 > Redis

redis学习第一天

2015-06-24 18:57 671 查看
1,安装

[root@localhost ~]# tar zxvf redis-3.0.2.tar.gz
[root@localhost ~]# mv redis-3.0.2 /usr/local/redis
[root@localhost ~]# cd /usr/local/redis
[root@localhost redis]#make &&make install
over
make 出错
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
使用 make MALLOC=libc && make install
#官方网站提示这样启动服务
src/redis-server
#但是出现了上面的问题后,请用下面的方式启动redis服务
nohup src/redis-server redis.conf &
关闭redis
redis-cli shutdown
2.
key相关指令
exists key key 存在返回1,不存在返回0.
del key1 keyn 删除指定key,返回删除成功的数量。
type key 查看key的数据类型
randomkey 当前库随机返回一个key
rename oldkey newkey 重命名一个key,如果newkey是存在的名字,那么newkey将被删除。
renamenx 同上,如果存在将会改名失败,返回0.
expire key seconds 为key指定过期时间 单位是秒 0
ttl key 返回key剩余过期时间,-1表示未设置 -2表示已经过期
select db-index 选择数据库 等于use datebases,默认连接的是0,默认有16个.
move key db-index 移动key到指定数据库,返回1表示成功,0表示失败.

3.
redis的value
string hash list set sorted set 5种

3.1 string类型

set key 设置key或者更新key
setnx key 创建key,如果已经存在,则返回0.
get key 获取key的value
getset key value 获取key的值,然后更新key的值
mget key1 keyn 批量获取
mset key1 value1 key2 value2 批量设置,如果有错误,将不做任何操作。
msetnx key1 value1 key2 value2 同上 但是如果有存在的key,将不做任何操作。
ince key 对key做+1操作,如果不是int类型,将会出错,如果key不存在,将返回1.
decy key 对key做-1操作,其他同上。
incrby key integer 对key加上指定数值,如果key不存在将会创建
decrby key integer 对key减去指定数值,其他同上,可以通过负值,达到incrby的效果,上同。

3.2
hash类型
hset key field value 设置,如果不存在则创建,例如: hset id xiaoming 19912213 | hset age xiaoming 17
hget key field 获取field的key值 例如: hget id xiaoming
hmget key field1 field2 批量获取,例如: hmget id xiaoming daming
hmset key field1 value1 ... 批量设置 例如: hmset age xiaoming 18 daming 19
hincrby key field integer 将key增加integer,成功返回新的值 可以为负数。
hexists key field 检测field和key是否存在,存在返回1 否则返回0
hdel key field 删除指定key,当field没有key的时候 field不存在。
hlen key 返回指定key的field数量
hkeys key 返回key的所有field
hvals key 返回key的所有value
hgetall key 返回key的所有filed和value

3.3
list类型 原地址 http://www.cnblogs.com/stephen-liu74/archive/2012/02/14/2351859.html
命令原型时间复杂度命令描述返回值
LPUSH key value [value ...] O(1)在指定Key所关联的List Value的头部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的头部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。 插入后链表中元素的数量。
LPUSHX key value O(1) 仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的头部插入参数中给出的Value,否则将不会有任何操作发生。插入后链表中元素的数量。
LRANGE key start stop O(S+N)时间复杂度中的S为start参数表示的偏移量,N表示元素的数量。该命令的参数start和end都是0-based。即0表示链表头部(leftmost)的第一个元素。其中start的值也可以为负值,-1将表示链表中的最后一个元素,即尾部元素,-2表示倒数第二个并以此类推。该命令在获取元素时,start和end位置上的元素也会被取出。如果start的值大于链表中元素的数量,空链表将会被返回。如果end的值大于元素的数量,该命令则获取从start(包括start)开始,链表中剩余的所有元素。返回指定范围内元素的列表。
LPOP key O(1) 返回并弹出指定Key关联的链表中的第一个元素,即头部元素,。如果该Key不存,返回nil。链表头部的元素。
LLEN keyO(1) 返回指定Key关联的链表中元素的数量,如果该Key不存在,则返回0。如果与该Key关联的Value的类型不是链表,则返回相关的错误信息。链表中元素的数量。
LREM key count value O(N) 时间复杂度中N表示链表中元素的数量。在指定Key关联的链表中,删除前count个值等于value的元素。如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果指定的Key不存在,则直接返回0。返回被删除的元素数量。
LSET key index value O(N) 时间复杂度中N表示链表中元素的数量。但是设定头部或尾部的元素时,其时间复杂度为O(1)。设定链表中指定位置的值为新值,其中0表示第一个元素,即头部元素,-1表示尾部元素。如果索引值Index超出了链表中元素的数量范围,该命令将返回相关的错误信息。
LINDEX key index O(N) 时间复杂度中N表示在找到该元素时需要遍历的元素数量。对于头部或尾部元素,其时间复杂度为O(1)。该命令将返回链表中指定位置(index)的元素,index是0-based,表示头部元素,如果index为-1,表示尾部元素。如果与该Key关联的不是链表,该命令将返回相关的错误信息。返回请求的元素,如果index超出范围,则返回nil。
LTRIM key start stop O(N) N表示被删除的元素数量。该命令将仅保留指定范围内的元素,从而保证链接中的元素数量相对恒定。start和stop参数都是0-based,0表示头部元素。和其他命令一样,start和stop也可以为负值,-1表示尾部元素。如果start大于链表的尾部,或start大于stop,该命令不错报错,而是返回一个空的链表,与此同时该Key也将被删除。如果stop大于元素的数量,则保留从start开始剩余的所有元素。
LINSERT key BEFORE|AFTER pivot value O(N) 时间复杂度中N表示在找到该元素pivot之前需要遍历的元素数量。这样意味着如果pivot位于链表的头部或尾部时,该命令的时间复杂度为O(1)。该命令的功能是在pivot元素的前面或后面插入参数中的元素value。如果Key不存在,该命令将不执行任何操作。如果与Key关联的Value类型不是链表,相关的错误信息将被返回。成功插入后链表中元素的数量,如果没有找到pivot,返回-1,如果key不存在,返回0。
RPUSH key value [value ...] O(1) 在指定Key所关联的List Value的尾部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的尾部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。 插入后链表中元素的数量。
RPUSHX key value O(1) 仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生。 插入后链表中元素的数量。
RPOP key O(1) 返回并弹出指定Key关联的链表中的最后一个元素,即尾部元素,。如果该Key不存,返回nil。 链表尾部的元素。
RPOPLPUSH source destination O(1) 原子性的从与source键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与destination键关联的链表的头部。如果source键不存在,该命令将返回nil,同时不再做任何其它的操作了。如果source和destination是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。返回弹出和插入的元素。
第一天over。
本文出自 “温柔” 博客,请务必保留此出处http://dangyibo.blog.51cto.com/4219248/1665192
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: