您的位置:首页 > 理论基础 > 数据结构算法

Redis的单机安装和5中数据结构的常用命令

2017-11-27 23:25 525 查看

一、单机安装

    1、官网下载tar安装包,如redis-4.0.2.tar.gz
    2、解压源码包:tar -zxvf redis-4.0.2.tar.gz
    3、cd 到解压的目录下:  编译:make redis-4.0.2   编译测试:make test
    4、make install PREFIX=/data/redis (将redis安装到prefix目录下)

    5、将源码包中的redis.conf复制到安装路程(prefix)下 ,可以将配置修改为 daemonize = yes(是否后台启动),默认不能使用外网等访问,即bind配置。。。

    6、启动redis服务: 在安装的bin目录下执行: ./redis-server ../redis.conf
    7、启用客户端(同样在bin文件夹下): ./redis-cli -h 127.0.0.1 -p 6379   关闭客户端: ./redis-cli shutdowm

二、五种数据结构的常用命令

1、字符类型(String)

    1)、set

        set key value 设置一个字符串,若已经存在key值则进行覆盖,无视数据类型,如: set hello world 

    2)、get

        get key 获取key值对应的value值,若key值不存在则返回nil,若key值不为字符串则返回一个错误,如:get hello 将返回world

    3)、setnx

        setnx key value 若key值不存在则设置键值对,若存在不做任何操作。

    4)、setex

        setnx key seconds value 设置key对应的value值并设置对应超时毫秒值,若key已经存在也会进行覆盖操作,该命令类似于以下两个命令组合:
        
set key value
expire key seconds


    5)、psetex

        psetnx key milliseconds value  与setex相同,只是设置时间为毫秒值

    6)、mget

        mget key [key ... ] 获取多个key对于的value ,若某位置上key不存在则对于返回nil

    7)、setrange

        setrange key offset vlaue 

    8)、getrange

        getrang key start end 获取key对应的字符串的start end偏移量子字符串,当-1表示最后一位,-2表示倒数第二位

    9)、mset

        mset key value [key vlaue ... ] 同时设置多个键值对,若key存在则进行覆盖操作,并且该操作为原子操作, 所有数据将在同一时间进行设置。

    10)、msetnx

        msetnx key value[key value ... ] 当且仅当所有的key都不存在才设置多个键值对,并且为原子操作

    11)、append

        append key value 将value值增加到原有key对于的值后,若key不存在则相当于set key value操作

    12)、setget 

        setget key value 覆盖设置key 为vlaue,并将原vlaue进行返回。可以存在但不是字符串则返回一个错误

    13)、strlen

        strlen 获取key对应的value字符串的长度,若value不是字符串则返回一个错误

    14)、incr 

        incr key 将key对应的value值++操作,若没有key存在,则先设置为0再进行++操作,若key对应的value不是string类型则返回一个错误

    15)、decr

        decr key 与incr相反执行减一操作

    16)、incrby

        incrby key increment 对key执行加increment数量操作,若key不存在则先将其设置为0再执行加操作,若key对应的value不是string类型则返回一个错误

    17)、decrby

        decrby key decrement 与incrby操作相反,执行将去decrement操作

2、散列类型(Hash相当于java的对象)

    1)、hset

        hset key field value 将key域中的field设置为value,如 hset user:1 name kevin(将id为1的user对象的name设置为kevin),若key不存在则会在哈希表中一个新的hash表被  创建,若哈希表中的field字段已经存在则覆盖field对应的值并返回0.否则返回1

    2)、hget

        hget key field 获取key的哈希表的field对应的value值,若key或者field不存在则返回nil

    3)、hmset

        hmset key field value[field value ... ] 同时设置多个key哈希表的值,若key不存在则先创建一个哈希表,若key对应的类型不是哈希则返回一个错误,否则返回OK

    4)、hmget

        hmget key field [field] 同时获取key哈希表中多个field 对应的vlaue值,若某一位置上field不存在则对于返回nil,key的哈希表不存在则总体返回nil

    5)、hsetnx 

        hsetnx key field value 若key哈希表不存在则创建一个,当且仅当key的哈希表中,field不存在时设置对于的value值,否则没有任何操作

    6)、hgetall

        hgetall key 获取key哈希表中所以的field value值,会以field0 value0 field1 vlaue1 的形式返回,长度为2倍,若key哈希表不存在返回empty list or set

    7)、hdel

        hdel key field 删除key哈希表中field对于的vlaue值,key 或者 field不存在则忽略,返回成功操作的个数

    8)、hlen

        hlen key 返回key哈希表中域的个数(即key的个数)

    9)、hexists

        hexists key field 查看哈希表key中,field域是否存在,若key或者field不存在则返回0,否则返回1

    10)、hincrby

        hincrby key field increment 对哈希表key的field域的值执行加上整数increment操作,increment可以为负数表示减去。key哈希表不存在则创建,field域不存在则创建并赋   值为0,再进行加上或者减去操作。

    11)、hincrbyfloat

        hincrbyfloat key field increment 与hincrbyfloat相同,只是将整数换成小数

    12)、hkeys

        hkeys key 获取key哈希表中所有的域

    13)、hvals

        hvals key 获取key哈希表中所有的域对应的值

3、列表类型(List)

    1)、lpush

        lpush key value [value ... ] 将一个或多个值按照顺序插入到名为key的列表的头部,由于是原子操作,所以是按照顺序插入,若key不存在则先创建一个空的有序队列。

    2)、rpush

        rpush key value [value ... ] 将一个或多个值按照顺序插入到名为key的列表尾部,由于是原子操作,所以是按照顺序插入到尾部,若key不存在则先创建一个空的有序队列

    3)、lpushx 

        lpushx key value 当且仅当一个名叫key的有序队列不存在时,创建一个空的有序队列并将value插入key有序队列的头部,并返回列表长度

    4)、rpushx

        rpushx key value 当且仅当一个名叫key的有序队列不存在时,创建一个空的有序队列并将vlaue插入key有序队列的尾部,并返回列表长度

    5)、lpop

        lpop key 删除名叫key的有序队列的头一个元素,并返回该元素,若不存在则返回nil

    6)、rpop

        rpop key 删除名叫key的有序队列的尾部一个元素,并返回该元素,若不存在则返回nil

    7)、blpop

        blpop key [key ... ] timeout 在超时时间内,阻塞的获取一个或多个名称列表的list的第一个元素,若前一个key不存在则在下一个key中获取。若在超时时间内没有获取到值(或不存在这样的值
4000
)则返回 nil和查找的时间,否则返回列表名称和其值组成的一个list

    8)、brpop

        brpop key [key ... ] timeout 在超时时间内,阻塞的获取一个或多个名称列表的list的最后一个元素,若前一个key不存在则在下一个key中获取。若在超时时间内没有获取到  值(或不存在这样的值)则返回 nil和查找的时间,否则返回列表名称和其值组成的一个list

    9)、llen

        llen key 获取名为key为的有序集合的个数,若key不存在则返回0(标识一个空集合),若key的类型不为有序集合则返回一个错误

    10)、lrange

        lrange key start end 获取名为key的有序集合的start到end对应的子集合,-1表示最后一个数,-2表示倒数第二个数。若下标区间超出范围不会报错,只会返回一个空集合

    11)、lrem

        lrem key count value count大于0表示从左到有查找并删除count的绝对值个和value相同值的元素,count小于0表示从右向左。返回删除的元素个数,若key不存在也返回0

    12)、lset

        lset key index value 为名为key有序集合下标为index的元素设置vlaue键值,若key不存在或下标越界返回一个错误

    13)、ltrim

        ltrim key start stop 为名为key的有序集合重新赋值为其start end下标区间的子集,-1表示最后一位,-2表示倒数第二位,若key不存在报错

    14)、lindex

        lindex key index 获取名为key的有序集合的下标为index的元素,-1表示最后一位,-2表示倒数第二位,若key不存在报错

    15)、linsert

        linsert key BEFORE | AFTER pivot vlaue 将值value的插入到有序集合key的值为pivot的元素的前或后,若key不存在报错,若没有值为pivot则不做任何操作

    16)、rpoplpush

        rpoplpush source destination 将有序集合source的最后一个元素移除并插入到destination有序集合的第一个元素之前,若source不存在则获取值为nil并且不做任何操作

    17)brpoplpush

        brpoplpush为rpoplpush的阻塞操作

4、集合类型(Set)

    1)、sadd

        sadd key mumber [mumber ... ] 将一个或多个member元素添加到名为key的set无序集合中,若key不存在则先创建一个空的无序集合再添加,若已存在key不是集合则报错

    2)、srem 

        key member [member ... ] 从名叫key的无序集合中移除一个或多个元素,若key不是集合则报错。返回被移除的元素的个数。

    3)、smembers 

        smembers key 获取名为无序集合的所有元素,若key不存在则返回一个空的集合

    4)、sismember

        sismember key member 查看名叫key的集合中是否存在member的元素,若存在返回1否则返回0

    5)、scard 

        scard key 获取集合key的元素个数, 若key不存在也返回0

    6)、smove

        smove source destination member 将member元素从source集合中移除并添加到destination集合中,若两个集合之一不存在是报错,若两个集合中不是都存在member元    素则不执行任何操作,若destination中已存在member则只是删除source中的member,返回被操作的元素的个数

    7)、spop

        spop key 从key的集合中随机删除一个元素并返回该元素,若key不存在或为空集合则返回nil,

    8)、srandmember

        srandmember key [count] 从集合key中获取count个随机元素,只是与spop不同的是不会对集合进行删除操作

    9)、sinter

        sinter key [key ... ] 获取多个集合的交集,若只有一个集合则返回该集合的全部元素,若某一集合为空则交集也为空

    10)、sinterstore

        sinterstore destination key [key ... ] 获取一个或多个集合的交集(这与sinter一样),并将结果报错到名为destination的集合中,若已存在则进行覆盖操作,当然也可以是     key之一,并且返回集合的成员个数

    11)、sunion

        sunion key [key ... ] 获取多个集合的并集,并返回其所有成员

    12)、sunionstore

        sunionstore destination key [key ... ] 获取多个集合的并集并将其存储到destination中,若已存在则进行覆盖操作,当然也可以是key之一,并返回该集合的元素数量

    13)、sdiff

        sdiff key [key ... ] 获取多个集合的差集,若某集合不存在则认为是空集,并返回该集合的成员

    14)、sdiffstore

        sdiffstore destination key [key ... ] 获取多个集合的差集,若某key集合不存在则认为是空集合。并将差集存储到destination的集合中,若已存在进行覆盖操作,当然destination也可以是key之一。返回差集集合的元素个数。

5、有序集合(Sorted Set)

    1)、zadd

        zadd key score member[score member ... ] 添加一个或多个元素到有序集合key中,score可以是整数或浮点数。若key不存在则先创建一个空的有序集合,若key已存在但是不是集合类型则报错。若member在key集合中已经存在则改正其score的值,并在将其充值在正确的序列位置上。

    2)、zrem

        zrem key member [member ... ] 从有序集合key中移除一个或多个member成员,若member成员不存在则忽略,当且仅当key存在但不是集合类型时报错,并且返回被移除成员的个数。

    3)、zcard

        zcard key 获取有序集合key的成员个数,若key不存在则返回0,当且仅当key存在但不是集合类型时报错。

    4)、zcount

        zcount key min max 获取有序集合key中,score在min和max之间(并且包含着两个值的元素)的member的个数。

    5)、zscore

        zscore key member 获取key有序集合中member的score值,但是返回的score值为string,若key集合不存在或member不在集合key中时返回nil

    6)、zincrby

        zincrby key increment member 为key的有序集合的member元素的score增加increment(值为负数表示减去)的值,若key存在但不是集合类型保存。若key不存在则创建一个或空的有序集合。若member不存在则该命令相当于zadd key increment member , 最终返回该member的最后的score(string类型)值。

    7)、zrang

        zrang key start stop [WITHSCORES] 获取key有序集合的从start到stop区间范围内的member元素,0标识第一位,-1表示倒数第一位,下标越界等不会报错。返回的成员按照score由低到高排序,score相同则按照字典排序。 若需要返回成员的score值则需要使用WITHSCORES 。

    8)、zrevrang

        zrevrang key start stop [WITHSCORES] 除了返回按照score倒序排列其他的都与zrang一致。

    9)、zrangbyscore

        zrangbyscore key min max [WITHSCORES] [LIMIT offset count] 按照分数区间(包含边界值)获取有序集合key中的元素。
        返回的成员按照score由低到高排序,score相同则按照字典排序。min max可以使用-inf +inf 表示获取从最小值到最大值的全部数据。
        WITHSCORES 则要求member成员的得分一并返回
        LIMIT offset count 类似于mysql的分页参数形式

    10)、zrevrangbyscore

        zrevrangbyscore 除了返回按照score倒序排列其他的都与zrevrangbyscore一致。

    11)、zrank

        zrank key member 按照score由小到大进行排序,返回member在key有序集合中按照score的排行数。

    12)、 zrevrank

        zrank key member 按照score由大到小进行排序,返回member在key有序集合中按照score的排行数。

    13)、zinterstore

        zinterstore destination numkeys key [key ... ] [WEIGHT weight [weight ... ] ] [AGGREGATE SUM|MIN|MAX ] 
        获取一个或多个有序集合的交集并将其存储到destination集合中,但是需要在numkeys上指定key集合的个数。
        默认情况下destination中某个member的score为原来个key中的各score的和。
        weight为需要与每个score值相乘的数,默认为1所以值取决于AGGREGATE(聚合函数),默认SUM即destination中某个menber的score值由所有原集合的对应score之和,当然可以使用AGGREGATE指定取最大值或最小值。

    14)、zunionstore

        zunion destination numkeys key [key ... ] [WEIGHT weight [weight ... ] ] [AGGREGATE SUM | MIN | MAX ] 取交集再存储,其他与zinterstore一致

    15)、zremrangebyrank

        zremrangebyrank key start stop 将key有序集合中score排行在start 到stop区间内的成员移除。

    16)、zremrangebyscore

        sremrangescore key min max 将key有序集合中score在min 到max 区间内的成员移除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 数据结构 命令