Redis系统梳理——API的理解和使用

Redis 提供了七种数据类型:String、Hash、Set、Sorted Set、Pub/Sub、Transaction

Redis 内部封装了一个redisObject实例来表示所有的key 和 value。redisObject包含的最主要字段是 type和encoding。type代表value对象具体的数据类型,包括String、Hash、List、Set和Sorted set等,encoding表示在Redis内部的存储方式。

String相关命令

1、set和get 命令

set key value [ex 秒数] [px 毫秒数] [nx/xx]

ex:设置指定的到期时间,单位为秒
px:设置指定的到期时间,单位为毫秒,如果ex和px同时写,则以后面的有效期为准
nx:如果对应key不存在则创建
xx:如果对应key存在则修改其值

get key 

2、mset 和 mget命令

mset key1 value1 key2 value2 ...

mget key1 key2

3、setrange和getrange命令
前者将字符串中偏移量为offset后的子串覆盖为指定的值,该命令返回修改后的字符串的长度。后者相当于截串(包含头尾)

setrange key offset value

getrange key start stop

127.0.0.1:6379> set word "Hello World"
OK
127.0.0.1:6379> setrange word 6 "Test1"
(integer) 11
127.0.0.1:6379> get word
"Hello Test1"
127.0.0.1:6379> setrange word 15 "Hei"
(integer) 18
127.0.0.1:6379> get word
"Hello Test1\x00\x00\x00\x00Hei"
127.0.0.1:6379> getrange word 1 3
"ell"

4、setex命令
设置指定键的值,并设置了该键值对的存活时间(单位秒)

setex key seconds value

5、setnx命令
设置指定的键值,当且仅当key值不存在时才生效

setnx key value

127.0.0.1:6379> setnx key "test2"
(integer) 1
127.0.0.1:6379> setnx key "RRRRR"
(integer) 0
127.0.0.1:6379> get key
"test2"

6、append命令
在指定的key对应的value上追加字符

append key value

127.0.0.1:6379> set key "Hello "
OK
127.0.0.1:6379> append key "World"
(integer) 11
127.0.0.1:6379> get key
"Hello World"

7、incr 、incrby命令和decr、decrby命令
递增、递减相关。 带上by的可指定增减量,不带的默认为1

incr key

incrby key k

decr key 

decrby key k

8、strlen命令
返回字符串的长度

strlen key

Hash相关命令

1、hset 和 hget 命令
前者如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

hset hash_name field value

hget hash_name field value

2、hmset 和 hmget 命令
同时操作多个key-value

 HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

 HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

    redis 127.0.0.1:6379> HMSET myhash field1 "Hello" field2 "World"
    OK
    redis 127.0.0.1:6379> HGET myhash field1
    "Hello"
    redis 127.0.0.1:6379> HGET myhash field2
    "World"

3、Hexists命令
查看哈希表的指定字段是否存在,如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

HEXISTS KEY_NAME FIELD_NAME 


    redis 127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> HEXISTS myhash field1
    (integer) 1
    redis 127.0.0.1:6379> HEXISTS myhash field2
    (integer) 0

4、Hlen命令
获取哈希表中字段的数量,当Key不存在时返回0

 HLEN KEY_NAME 

    redis 127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    redis 127.0.0.1:6379> HLEN myhash
    (integer) 2

5、Hdel命令
删除哈希表中的一个或多个字段,不存在的字段将被忽略

HDEL KEY_NAME FIELD1.. FIELDN

    redis 127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> HDEL myhash field1
    (integer) 1
    redis 127.0.0.1:6379> HDEL myhash field2
    (integer) 0

6、Hkeys 和 Hvals 命令
获取所有的key值和所有的value值

HKEYS key 
HVALS key 

    redis 127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    redis 127.0.0.1:6379> HKEYS myhash
    1) "field1"
    2) "field2"
    redis 127.0.0.1:6379> HVALS myhash
    1) "foo"
    2) "bar"

7、Hgetall命令
返回哈希表中,所有的字段和值

HGETALL KEY_NAME 

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"

List相关命令

1、Lpush 和 Rpush 命令
Lpush 命令将一个或多个值插入到列表头部。Rpush命令将一个或多个值插入到列表尾部

LPUSH KEY_NAME VALUE1.. VALUEN

RPUSH KEY_NAME VALUE1..VALUEN

2、Lpop 和 Rpop 命令
Lpop移除并返回列表第一个元素,Rpop移除并返回列表最后一个元素

Lpop KEY_NAME 

Rpop KEY_NAME

3、Lrange 命令
返回指定区间内的元素。0表示第一个元素,1表示第二个元素。-1表示倒数第一个元素,-2表示倒数第二个元素

LRANGE KEY_NAME START END

4、Lrem命令
根据参数count,移除列表中与value相等的元素
count > 0 从头开始搜索,移除列表中与value相等的元素,移除个数为 count
count < 0 从尾开始搜索,移除列表中与value相等的元素,移除个数为 count 的经验值
count = 0 移除列表中与value相等的所有值

LREM KEY_NAME COUNT VALUE

    redis> RPUSH mylist "hello"
    (integer) 1
    redis> RPUSH mylist "hello"
    (integer) 2
    redis> RPUSH mylist "foo"
    (integer) 3
    redis> RPUSH mylist "hello"
    (integer) 4
    redis> LREM mylist -2 "hello"
    (integer) 2
    redis> LRANGE mylist 0 -1
    1) "hello"
    2) "foo"

5、Llen命令
返回列表长度

LLEN KEY_NAME 

SET相关命令

1、Sadd 和 Srem 命令

添加和删除

SADD KEY_NAME VALUE1..VALUEN

SREM KEY_NAME MEMBER1..MEMBERN

    redis 127.0.0.1:6379> SADD myset "hello"
    (integer) 1
    redis 127.0.0.1:6379> SADD myset "foo"
    (integer) 1
    redis 127.0.0.1:6379> SADD myset "hello"
    (integer) 0
    redis 127.0.0.1:6379> SMEMBERS myset
    1) "hello"
    2) "foo"
    redis 127.0.0.1:6379> SREM myset "hello"
    (integer) 0
    redis 127.0.0.1:6379> SMEMBERS myset
    1) "foo"

2、Smembers 命令
返回集合中所有成员

SMEMBERS KEY_NAME

3、Scard命令
返回集合的成员数量

SCARD KEY_NAME

4、Sismember命令
判断是否是集合内的成员

SISMEMBER KEY_NAME VALUE

SORT SET 相关命令
1、Zadd 和 Zrem 命令

ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN

ZREM key member [member ...]

2、Zrange
返回有序集合中,指定区间内的成员

 ZRANGE key start stop [WITHSCORES]

3、Zcard
返回集合中,成员的数量

ZCARD KEY_NAME

Pub/Sub 发布订阅
常用的命令有PSUBSCRIBE、PUBSUB、PUBLISH、SUBSCRIBE。

PSUBSCRIBE pattern:订阅一个或多个符合给定模式的频道;
PUBSUB subcommand:查看订阅与发布系统状态;
PUBLISH channel message:将信息发送到指定的频道;
SUBSCRIBE channel:订阅给定的一个或多个频道的信息;
UNSUBSCRIBE [channel [channel …]]:指退订给定的频道。

猜你喜欢

转载自blog.csdn.net/every__day/article/details/80917118