zoukankan      html  css  js  c++  java
  • (五)、Redis五大数据类型

    Redis的五大数据类型

    官网命令参考:http://redisdoc.com/

    String(字符串)

    字符串类型是Redis最基本的数据结构,首先键都是String类型,其他几种数据结构都是在String类型上建立的,字符串可以是简单字符串,也可以是复杂字符串(二进制的图片、视频、音频、XML)等等,但是最大值Value不超过512MB

    (1)追加值

    append key value

    127.0.0.1:6379> get k1
    "3"
    127.0.0.1:6379> append k1 12345
    (integer) 6
    127.0.0.1:6379> get k1
    "312345"
    

    (2)返回 key 所储存的字符串值的长度

    strlen key

    127.0.0.1:6379> strlen k1
    (integer) 6
    

    (3)累加1

    incr key

    如果不是整数会返回错误

    127.0.0.1:6379> get k2
    "4"
    127.0.0.1:6379> incr k2
    (integer) 5
    127.0.0.1:6379> incr k2
    (integer) 6
    127.0.0.1:6379> get k2
    "6"
    

    (4)累减1

    decr key

    127.0.0.1:6379> get k2
    "6"
    127.0.0.1:6379> decr k2
    (integer) 5
    127.0.0.1:6379> decr k2
    (integer) 4
    127.0.0.1:6379> get k2
    "4"
    

    (5)指定递增

    incrby key value

    127.0.0.1:6379> get k2
    "4"
    127.0.0.1:6379> incrby k2 3
    (integer) 7
    127.0.0.1:6379> incrby k2 3
    (integer) 10
    127.0.0.1:6379> get k2
    "10"
    

    (6)指定递减

    decrby key value

    127.0.0.1:6379> get k2
    "10"
    127.0.0.1:6379> decrby k2 2
    (integer) 8
    127.0.0.1:6379> decrby k2 2
    (integer) 6
    127.0.0.1:6379> get k2
    "6"
    

    (7)获取Key的指定范围

    getrange key a b

    127.0.0.1:6379> get k1
    "312345"
    127.0.0.1:6379> getrange k1 0 3
    "3123"
    127.0.0.1:6379> getrange k1 0 -1
    "312345"
    

    从0到-1表示全部

    (8)设置指定位置的字符

    127.0.0.1:6379> setrange k1 0 aaa
    (integer) 6
    127.0.0.1:6379> get k1
    "aaa345"
    

    (9)Setex 命令为指定的 key 设置值及其过期时间

    Setex key seconds value

    如果 key 已经存在, SETEX 命令将会替换旧的值

    127.0.0.1:6379> get k2
    "6"
    127.0.0.1:6379> SETEX k2 60 10
    OK
    127.0.0.1:6379> ttl k2
    (integer) 49
    127.0.0.1:6379> get k2
    "10"
    

    (10)批量设置、获取值

    mset k1 v1 k2 v2

    mget k1 k2 k3

    127.0.0.1:6379> mset k2 111 k3 222 k4 333
    OK
    127.0.0.1:6379> mget k2 k3 k4
    1) "111"
    2) "222"
    3) "333"
    

    如果已存在键,则都不会执行

    Hash(哈希)

    类似java里面的Map<String,Object>,hash是一个键值对集合,

    (1)hset、hget

    用于为哈希表中的字段赋值、获取值

    127.0.0.1:6379> hset user id 1
    (integer) 1
    127.0.0.1:6379> hget user id
    "1"
    

    (2)hmset

    Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中

    127.0.0.1:6379> hmset customer id 10 name ylc age 22
    OK
    127.0.0.1:6379> hmget customer id name age
    1) "10"
    2) "ylc"
    3) "22"
    

    (3)hgetall

    命令用于返回哈希表中,所有的字段和值

    127.0.0.1:6379> hgetall customer
    1) "id"
    2) "10"
    3) "name"
    4) "ylc"
    5) "age"
    6) "22"
    

    (4)hdel

    删除某个字段

    127.0.0.1:6379> hdel customer name
    (integer) 1
    

    (5)hlen

    获取元素个数

    127.0.0.1:6379> hlen customer
    (integer) 2
    

    (6)hexists

    判断字段是否存在

    127.0.0.1:6379> hexists customer name
    (integer) 0
    127.0.0.1:6379> hexists customer id
    (integer) 1
    

    (7)hkeys、hvals

    获取所有key或者value

    127.0.0.1:6379> hkeys customer
    1) "id"
    2) "age"
    127.0.0.1:6379> hvals customer
    1) "10"
    2) "22"
    

    (8)hincrby

    用于为哈希表中的字段值加上指定增量值

    127.0.0.1:6379> hincrby customer age 2
    (integer) 24
    127.0.0.1:6379> hincrby customer age 2
    (integer) 26
    

    (9)hincrbyfloat

    用于为哈希表中的字段值加上指定浮点数增量值

    127.0.0.1:6379> hset customer score 99.0
    (integer) 1
    127.0.0.1:6379> hincrbyfloat customer score 0.5
    "99.5"
    

    (10)hsetnx

    用于为哈希表中不存在的的字段赋值,如果字段已经存在于哈希表中,操作无效

    127.0.0.1:6379> hsetnx customer age 30
    (integer) 0
    127.0.0.1:6379> hsetnx customer money 30
    (integer) 1
    

    List列表

    是一个简单的字符串链表,可以添加在元素的头部和尾部

    (1)将一个或多个值插入到列表头部

    lpush key v1 v2 v3

    127.0.0.1:6379> lpush list 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> keys *
    1) "list"
    127.0.0.1:6379> lrange list 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    

    (2)将一个或多个值插入到列表尾部

    127.0.0.1:6379> rpush list2 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> lrange list2 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    

    (3)lpop顶部出栈、rpop底部出栈

    127.0.0.1:6379> lrange list 0 -1 
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    127.0.0.1:6379> lpop list
    "5"
    127.0.0.1:6379> rpop list
    "1"
    127.0.0.1:6379> lrange list 0 -1
    1) "4"
    2) "3"
    3) "2"
    

    (4)lindex

    根据下标获取索引

    127.0.0.1:6379> lindex list 0
    "4"
    127.0.0.1:6379> lindex list 1
    "3"
    127.0.0.1:6379> lindex list 2
    "2"
    

    (5)llen

    数组长度

    127.0.0.1:6379> llen list
    (integer) 3
    

    (6)lrem key

    删除多个vlue

    127.0.0.1:6379> rpush list03 1 1 1 2 2 2 3 3 3 4 4 4
    (integer) 12
    127.0.0.1:6379> lrem list03 2 3
    (integer) 2
    127.0.0.1:6379> lrange list03 0 -1
     1) "1"
     2) "1"
     3) "1"
     4) "2"
     5) "2"
     6) "2"
     7) "3"
     8) "4"
     9) "4"
    10) "4"
    

    (6)itrim

    截取指定范围值

    127.0.0.1:6379> lrange list03 0 -1
     1) "1"
     2) "1"
     3) "1"
     4) "2"
     5) "2"
     6) "2"
     7) "3"
     8) "4"
     9) "4"
    10) "4"
    127.0.0.1:6379> ltrim list03 3 7
    OK
    127.0.0.1:6379> lrange list03 0 -1
    1) "2"
    2) "2"
    3) "2"
    4) "3"
    5) "4"
    

    (7)lset key index value

    喜欢key下标

    127.0.0.1:6379> lrange list03 0 -1
    1) "2"
    2) "2"
    3) "2"
    4) "3"
    5) "4"
    127.0.0.1:6379> lset list03 1 x
    OK
    127.0.0.1:6379> lrange list03 0 -1
    1) "2"
    2) "x"
    3) "2"
    4) "3"
    5) "4"
    

    (8)linsert key before/after

    替换值

    127.0.0.1:6379> linsert list03 before x java
    (integer) 6
    127.0.0.1:6379> lrange list03 0 -1
    1) "2"
    2) "java"
    3) "x"
    4) "2"
    5) "3"
    6) "4"
    

    (9)rpoplpush

    用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回

    127.0.0.1:6379> lrange list 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    127.0.0.1:6379> lrange list2  0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    127.0.0.1:6379> rpoplpush list2  list
    "4"
    127.0.0.1:6379> lrange list2  0 -1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> lrange list 0 -1
    1) "4"
    2) "5"
    3) "4"
    4) "3"
    5) "2"
    

    list它是一个字符串链表,对头部尾部操作效率最高,如果值全部移除,对应键全部消失

    Set(集合)

    Set是String类型的无序集合,通过HashTable实现

    (1)sadd

    Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。

    假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合

    127.0.0.1:6379> sadd set01 1 1 2 2 3 3
    (integer) 3
    

    (2)smembers

    命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合

    127.0.0.1:6379> smembers set01
    1) "1"
    2) "2"
    3) "3"
    

    (3)Sismember

    判断成员元素是否是集合的成员

    127.0.0.1:6379> sismember set01 1
    (integer) 1
    127.0.0.1:6379> sismember set01 4
    (integer) 0
    

    (4)scard

    获取集合中元素个数

    127.0.0.1:6379> scard set01
    (integer) 3
    

    (5)srem

    删除集合元素

    127.0.0.1:6379> srem set01 3
    (integer) 1
    127.0.0.1:6379> smembers set01
    1) "1"
    2) "2"
    

    (6)srandmember

    随机选出几个数

    127.0.0.1:6379> sadd set02 2 3 4 5 6 7 8 9
    (integer) 8
    127.0.0.1:6379> srandmember set02 3
    1) "5"
    2) "4"
    3) "9"
    127.0.0.1:6379> srandmember set02 3
    1) "5"
    2) "3"
    3) "2"
    127.0.0.1:6379> srandmember set02 3
    1) "5"
    2) "4"
    3) "6"
    

    (7)spop

    随机出栈

    127.0.0.1:6379> smembers set02
    1) "2"
    2) "3"
    3) "4"
    4) "5"
    5) "6"
    6) "7"
    7) "8"
    8) "9"
    127.0.0.1:6379> spop set02
    "4"
    127.0.0.1:6379> spop set02
    "9"
    

    (8)smove

    将指定成员 member 元素从 source 集合移动到 destination 集合

    127.0.0.1:6379> sadd set03 x y z
    (integer) 3
    127.0.0.1:6379> smembers set03
    1) "z"
    2) "y"
    3) "x"
    127.0.0.1:6379> smove set02 set03 5
    (integer) 1
    127.0.0.1:6379> smembers set03
    1) "z"
    2) "y"
    3) "5"
    4) "x"
    

    (9)sdiff

    数组差集,在一个集合中但不在第二个

    127.0.0.1:6379> sadd set01 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> sadd set02 3 4 5 a b
    (integer) 5
    127.0.0.1:6379> sdiff set01 set02
    1) "1"
    2) "2"
    
    127.0.0.1:6379> sdiff set02 set01
    1) "b"
    2) "a"
    

    (10)sinter

    交集

    127.0.0.1:6379> sinter set01 set02
    1) "3"
    2) "4"
    3) "5"
    

    (11)sunion并集

    127.0.0.1:6379> sunion set01 set02
    1) "b"
    2) "a"
    3) "5"
    4) "4"
    5) "3"
    6) "2"
    7) "1"
    

    ZSet(有序集合)

    (1)zadd

    用于将一个或多个成员元素及其分数值加入到有序集当中

    127.0.0.1:6379> zadd zset 60 v1 70 v2 80 v3 100 v5
    (integer) 4
    

    (2)zrange

    返回有序集中,指定区间内的成员

    127.0.0.1:6379> zrange zset 0 -1
    1) "v1"
    2) "v2"
    3) "v3"
    4) "v5"
    

    (3)zrangebyscore

    返回所有符合条件 x <= score <= y 的成员,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)

    127.0.0.1:6379> zrangebyscore zset 60 90
    1) "v1"
    2) "v2"
    3) "v3"
    

    还可以进行分页

    127.0.0.1:6379> zrangebyscore zset 60 90
    1) "v1"
    2) "v2"
    3) "v3"
    127.0.0.1:6379> zrangebyscore zset 60 90 limit 2 2
    1) "v3"
    

    (4)zrem

    用于移除有序集中的一个或多个成员,不存在的成员将被忽略

    127.0.0.1:6379> zrem zset v5
    (integer) 1
    127.0.0.1:6379> zrange zset 0 -1 withscores
    1) "v1"
    2) "60"
    3) "v2"
    4) "70"
    5) "v3"
    6) "80"
    

    (5)zcard

    有序集的元素个数,否则返回0

    127.0.0.1:6379> zcard zset
    (integer) 3
    

    (6)zount

    用于计算有序集合中指定分数区间的成员数量

    127.0.0.1:6379> zcount zset 60 80
    (integer) 3
    

    (7)zrank

    返回有序集中指定成员的排名

    127.0.0.1:6379> zrank zset v2
    (integer) 1
    

    (8)zscore

    成员的分数值

    127.0.0.1:6379> zscore zset v2
    "70"
    

    (9)zrevrank

    逆序获取下标值

    127.0.0.1:6379> zrevrank zset v3
    (integer) 0
    127.0.0.1:6379> zrange zset 0 -1 withscores
    1) "v1"
    2) "60"
    3) "v2"
    4) "70"
    5) "v3"
    6) "80"
    

    (10)zrevrange

    逆序遍历

    127.0.0.1:6379> zrevrange zset 0 -1
    1) "v3"
    2) "v2"
    3) "v1"
    

    (11)zrevrangebyscore

    返回有序集中指定分数区间内的所有的成员,从大到小排列

    127.0.0.1:6379> zrevrangebyscore zset 90 60
    1) "v3"
    2) "v2"
    3) "v1"
    

    键(Key)通用命令

    查询所有键:Keys *

    127.0.0.1:6379> keys k?
    1) "k1"
    127.0.0.1:6379> keys *
    1) "k1"
    2) "myhash"
    3) "key:__rand_int__"
    4) "counter:__rand_int__"
    

    判断键是否存在:exists key

    127.0.0.1:6379> exists k1
    (integer) 1
    

    移动key:move key db

    127.0.0.1:6379> move k1 2
    (integer) 1
    127.0.0.1:6379> select 2
    OK
    127.0.0.1:6379[2]> keys *
    1) "k1"
    

    给Key设置过期时间:expire key seconds

    127.0.0.1:6379[2]> expire k1 10
    (integer) 1
    

    查看剩余过期时间:ttl key

    127.0.0.1:6379[2]> ttl k1
    (integer) 6
    127.0.0.1:6379[2]> ttl k1
    (integer) -2
    

    -1表示永不过期,-2表示已过期,过期之后数据库不再有

    删除键:del key

    127.0.0.1:6379> del k2
    (integer) 1
    

    删除成功会返回个数,删除一个不存在的会返回0

    del a b c表示删除多个键

    查看键的类型:type key

    127.0.0.1:6379> type k1
    string
    
  • 相关阅读:
    构建之法阅读笔记06
    构建之法阅读笔记05
    第九周进度条
    团队开发之个人博客九
    团队开发之个人博客八(4月27)
    无人机第二波
    团队开发之个人博客七
    无人机学习第一波
    团队开发之个人博客六
    第八周进度条
  • 原文地址:https://www.cnblogs.com/cg-ww/p/15176070.html
Copyright © 2011-2022 走看看