zoukankan      html  css  js  c++  java
  • 五大数据类型

    cd src//切换到src目录下
    切换到管理员
    redis-server /etc/redis/redis.conf
    redis-cli
    建立数据set k1 hello
    得到数据 get k1
    dbsize查看库中数据个数
    keys *查看数据
    flushdb清除当前数据库
    flushAll清楚所有数据库
    数据库共有16个
    切换到其它数据库的命令 select 第几个数据库
    redis的五大数据类型:
    String(字符串) Hash(哈希类似java中的map) List(列表) Set(集合) Zset(sorted set:有序集和)
    String(字符串)
    string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
    string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
    string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
    Hash(哈希)
    Redis hash 是一个键值对集合。
    Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
    类似Java里面的Map<String,Object>
    List(列表)
    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
    它的底层实际是个链表
    Set(集合)
    Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,
    zset(sorted set:有序集合)
    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个double类型的分数。
    redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

    EXISTS k1查询是否有这个数据
    move +变量名+要移到的数据库
    expire key +秒数为给定的key设置国企时间
    ttl key查看还有多少秒过期-1表示永不过期-2表示已经过期
    type key查看数据类型
    del mylist删除

    append k1 11111在后面追加数据
    strlen查询变量的长度
    INCR k2依次增加1
    decr k2依次减少1
    INCRBY k2 3一次增加3
    DECRBY k2 3每次减少3
    getrange key value value 获取从第几个到第几个的数值,和数组类似
    127.0.0.1:6379> SETRANGE k1 0 xxxx 从第0个开始设置xxx
    setex k3 10 v3 设置变量k3 +时间(秒数)+里面的数值后消失
    127.0.0.1:6379> setnx k11 v11 建立一个变量和数值
    mset k1 v1 k2 v2 k3 v3 同时设置多了变量和值
    mget k1 k2 k3 得到多个变量的值
    MSETNX k3 v3 k4 v4 存入的两个数值一个已经存在,一个不存在。两个都不会存进去
    MSETNX k4 v4 k5 v5存入的两个数值都不存在的时候,两个都可以存入
    Lpush从左边依次进入
    127.0.0.1:6379> LPUSH list01 1 2 3 4 5
    (integer) 5
    rpush从右边依次进入
    127.0.0.1:6379> rPUSH list02 1 2 3 4 5
    (integer) 5
    正着进入,反向出
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    反向进入,正向输出
    127.0.0.1:6379> LRANGE list02 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    LPOP栈顶的输出
    127.0.0.1:6379> LPOP list01
    "5"
    RPOP栈底的输出
    127.0.0.1:6379> RPOP list01
    "1"
    127.0.0.1:6379> RPOP list02
    "5"
    127.0.0.1:6379> LPOP list02
    "1"
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "4"
    2) "3"
    3) "2"
    127.0.0.1:6379> LRANGE list02 0 -1
    1) "2"
    2) "3"
    4)"4"
    LPOP和RPOP输出后就不在栈里面
    127.0.0.1:6379> LINDEX list01 0 LINDEX按照索引下标获得元素
    "4"
    127.0.0.1:6379> LINDEX list01 3
    (nil)
    127.0.0.1:6379> LINDEX list02 0
    "2"
    127.0.0.1:6379> LLEN list01 LLEN计算出list的长度
    (integer) 3
    Lrem key 删除N个value LREM list03 2 1
    127.0.0.1:6379> LTRIM list01 0 4
    OK
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    5) "4"
    开始index结束index,截取指定长度重新赋值给key
    RPOPLPUSH把list01的栈底放在list02的栈顶
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    5) "4"
    127.0.0.1:6379> LRANGE list02 0 -1
    1) "2"
    2) "3"
    3) "4"
    127.0.0.1:6379> RPOPLPUSH list01 list02
    "4"
    127.0.0.1:6379> LRANGE list02 0 -1
    1) "4"
    2) "2"
    3) "3"
    4) "4"
    lset key index value
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    127.0.0.1:6379> LSET list01 1 x
    OK
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "x"
    3) "6"
    4) "5"
    LINSERT key before value value在某个值之前插入数值
    LINSERT key after value value在某个值之前插入数值
    127.0.0.1:6379> LINSERT list01 before x 7
    (integer) 5
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "7"
    3) "x"
    4) "6"
    5) "5"
    127.0.0.1:6379> LINSERT list01 after 5 4
    (integer) 6
    127.0.0.1:6379> LRANGE list01 0 -1
    1) "8"
    2) "7"
    3) "x"
    4) "6"
    5) "5"
    6) "4"
    set的例子、
    SADD添加数据如果数据重复只添加一次
    127.0.0.1:6379> SADD set01 1 1 2 2 3 3
    (integer) 3
    SMEMBERS查询数据
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    3) "3"
    SISMEMBER 查询数据为某个值的个数
    127.0.0.1:6379> SISMEMBER set01 1
    (integer) 1
    127.0.0.1:6379> SISMEMBER set01 x
    (integer) 0
    SCARD获取集合里面元素个数
    127.0.0.1:6379> SCARD set01
    (integer) 3
    SREM删除某个元素
    127.0.0.1:6379> SREM set01 3
    (integer) 1
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    SRANDMEMBER key 某个整数(随意出三个数值)
    127.0.0.1:6379> SADD set02 1 2 3 4 5 6 7 8
    (integer) 8
    127.0.0.1:6379> SRANDMEMBER set02 3
    1) "1"
    2) "3"
    3) "5"
    sadd添加数据时,如果加入的数据和原来的数据有相同的部分就会只添加不同的部分
    SPOP随机出栈
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    127.0.0.1:6379> sadd set01 1 2 3 4 5 6 7 8
    (integer) 6
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "6"
    7) "7"
    8) "8"
    127.0.0.1:6379> SPOP set01
    "5"
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "6"
    6) "7"
    7) "8"
    SMOVE将set01中的某个数值转移到set02的栈底中
    127.0.0.1:6379> SADD set02 x y z
    (integer) 3
    127.0.0.1:6379> SMEMBERS set02
    1) "z"
    2) "y"
    3) "x"
    127.0.0.1:6379> SMOVE set01 set02 3
    (integer) 1
    127.0.0.1:6379> SMEMBERS set02
    1) "z"
    2) "y"
    3) "x"
    4) "3"
    127.0.0.1:6379> SMEMBERS set01
    1) "1"
    2) "2"
    3) "4"
    4) "6"
    5) "7"
    6) "8"
    数学集合类
    SDIFF在第一个set里面而不再后面任何一个set里的项
    127.0.0.1:6379> SADD set01 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> SADD set02 1 2 3 a b
    (integer) 5
    127.0.0.1:6379> SDIFF set01 set02
    1) "4"
    2) "5"
    SINTERset中相同的值
    127.0.0.1:6379> SINTER set01 set02
    1) "1"
    2) "2"
    3) "3"
    SUNIONset所有的数值的并集
    127.0.0.1:6379> SUNION set01 set02
    1) "a"
    2) "2"
    3) "4"
    4) "b"
    5) "5"
    6) "3"
    7) "1"
    hash的:KV模式不变,V是一个键值对
    HSET user是一个key ,id 11都是value,是键值对
    127.0.0.1:6379> HSET user id 11
    (integer) 1
    hget取值的时候也是先取user,再取id
    127.0.0.1:6379> hget user id
    "11"
    使用hset和hget的时候都是只能获取一个键值对
    127.0.0.1:6379> hset user name aa
    (integer) 1
    127.0.0.1:6379> hget user name
    "aa"
    HMSET可以设置多个value键值对
    127.0.0.1:6379> HMSET customer id 11 name ss age 15
    OK
    HMGET可以得到多个value
    127.0.0.1:6379> HMGET customer id name age
    1) "11"
    2) "ss"
    3) "15"
    HGETALL得到全部的键值对
    127.0.0.1:6379> HGETALL customer
    1) "id"
    2) "11"
    3) "name"
    4) "ss"
    5) "age"
    6) "15"
    HDEL删除user中的name
    127.0.0.1:6379> HDEL user name
    (integer) 1
    127.0.0.1:6379> HGET user name
    (nil)
    HLEN得到有多少个键值对
    127.0.0.1:6379> HLEN user
    (integer) 1
    127.0.0.1:6379> HLEN customer
    (integer) 3
    HEXISTS key在key里面的某个值的key,有的话是1,没有为0
    127.0.0.1:6379> HEXISTS customer age
    (integer) 1
    127.0.0.1:6379> HEXISTS customer phone
    (integer) 0
    HKEYS得到customer的keys
    127.0.0.1:6379> HKEYS customer
    1) "id"
    2) "name"
    3) "age"
    HVALS得到customer的values
    127.0.0.1:6379> HVALS customer
    1) "11"
    2) "ss"
    3) "15"
    HINCRBY依次增加customer中的age的数值增加value
    127.0.0.1:6379> HGET customer age
    "15"
    127.0.0.1:6379> HINCRBY customer age 1
    (integer) 16
    127.0.0.1:6379> HINCRBY customer age 1
    (integer) 17
    HINCRBYFLOAT依次增加小数
    127.0.0.1:6379> hset customer score 91.5
    (integer) 1
    127.0.0.1:6379> HINCRBYFLOAT customer score 0.5
    "92"
    HSETNX给hash表中不存在的赋值,成功是1,失败是0
    127.0.0.1:6379> HSETNX customer age 17
    (integer) 0
    127.0.0.1:6379> HSETNX customer email abc@126.com
    (integer) 1
    zset详解
    Zadd命令:
    将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
    如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
    score 值可以是整数值或双精度浮点数。
    如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
    当 key 存在但不是有序集类型时,返回一个错误。
    ZRANGE
    127.0.0.1:6379> ZADD zset01 60 v1 70 v2 80 v3 90 v4 100 v5
    (integer) 5
    ZRANGE显示出添加的信息
    127.0.0.1:6379> ZRANGE zset01 0 -1
    1) "v1"
    2) "v2"
    3) "v3"
    4) "v4"
    5) "v5"
    127.0.0.1:6379> ZRANGE zset01 0 -1 withscores
    1) "v1"
    2) "60"
    3) "v2"
    4) "70"
    5) "v3"
    6) "80"
    7) "v4"
    8) "90"
    9) "v5"
    10) "100"
    ZRANGEBYSCORE找出某个范围的值
    127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90
    1) "v1"
    2) "v2"
    3) "v3"
    4) "v4"
    ZRANGEBYSCORE加上( 意思是不包含
    127.0.0.1:6379> ZRANGEBYSCORE zset01 (60 (90
    1) "v2"
    2) "v3"
    127.0.0.1:6379> ZRANGEBYSCORE zset01 60 (90
    1) "v1"
    2) "v2"
    3) "v3"
    ZRANGEBYSCORE limit 从第几个开始截取几个
    127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90 limit 2 2
    1) "v3"
    2) "v4"
    ZREM key某score下对应的value值,作用是删除元素
    127.0.0.1:6379> ZREM zset01 v5
    (integer) 1
    127.0.0.1:6379> ZRANGE zset01 0 -1 withscores
    1) "v1"
    2) "60"
    3) "v2"
    4) "70"
    5) "v3"
    6) "80"
    7) "v4"
    8) "90"
    ZCARD
    .0.1:6379> ZCARD zset01
    (integer) 4
    ZCOUNT统计出某个范围的个数
    127.0.0.1:6379> ZCOUNT zset01 60 80
    (integer) 3
    ZRANK找到对应值的下标
    127.0.0.1:6379> ZRANK zset01 v4
    (integer) 3
    ZSCORE找到对应key的value值
    127.0.0.1:6379> ZSCORE zset01 v4
    "90"
    ZREVRANK key value 作用是逆序获得下标值
    127.0.0.1:6379> ZREVRANK zset01 v4
    (integer) 0
    ZREVRANGE和zrange的区别,一个正序输出,一个倒序输出
    127.0.0.1:6379> ZREVRANGE zset01 0 -1
    1) "v4"
    2) "v3"
    3) "v2"
    4) "v1"
    127.0.0.1:6379> ZRANGE zset01 0 -1
    1) "v1"
    2) "v2"
    3) "v3"
    4) "v4"
    ZREVRANGEBYSCORE根据成绩从大到小输出
    127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60
    1) "v4"
    2) "v3"
    3) "v2"
    4) "v1"

  • 相关阅读:
    Hrbust-1492 盒子(二分图最大匹配)
    数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
    HDU 1710 二叉树遍历
    HDU 2891
    HDU 2895 贪心 还是 大水题
    POJ 2896 另解暴力
    POJ 2896 AC自动机 or 暴力
    HDU 1714 math
    POJ 1328 贪心
    POJ 2109 巧妙解法
  • 原文地址:https://www.cnblogs.com/mxf97826/p/8707970.html
Copyright © 2011-2022 走看看