zoukankan      html  css  js  c++  java
  • redis数据类型的使用及介绍

    Redis数据类型

    1、Sting类型

    • set命令

      设置键值,存在则覆盖,不存在则新建

    • set key value EX 秒

      设置有效时长为秒

    • nx 如果键不存在则新建,如果存在返回nil

    • xx 只有键存在才能操作

    127.0.0.1:6379> auth foobared # 注释Windows上操作redis时需要输入配置文件上的密码
    OK
    127.0.0.1:6379> keys *
    (empty list or set)
    127.0.0.1:6379> set wusir 666
    OK
    127.0.0.1:6379> get wusir
    "666"
    127.0.0.1:6379> set gg ll ex 5
    OK
    127.0.0.1:6379> get gg
    "ll"
    127.0.0.1:6379> get gg
    (nil)
    127.0.0.1:6379> keys *
    1) "wusir"
    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> set k1 v1 nx
    (nil)
    127.0.0.1:6379> set k2 v2 nx
    OK
    127.0.0.1:6379> get k2
    "v2"
    127.0.0.1:6379> set k3 v3 xx
    (nil)
    127.0.0.1:6379> set k1 va
    OK
    127.0.0.1:6379> get k1
    "va"
    127.0.0.1:6379>
    
    • get命令

      获取key 对应的value,只能获取一个,KEY存在,返回value,不存在返回nil

    • mset

      批量设置key,和value的值,会覆盖已存在的值

    • mget

      批量获取key值,如果不存在返回nil

    • getset

      给key重新设定value,并返回原来的value,如果key不存在则返回nil

    • strlen

      返回value的长度

    • append

      key存在追加,不存在新建

    • incr

      将Key中的数字加1,只能对数字产生作用

      • 常用作计数,在使用getset重置为0
    • decr

      将Key中的数字减1,只能对数字产生作用

    • incrby

      增加指定值 多少,只能对数字产生作用

    • decrby

      减少指定值 多少,只能对数字产生作用

    • indcrbyfloat(默认保留17位)

      增加指定的浮点数,不存在减少,但是可以加上负的浮点数

    • getrange

      切片同Python切片类似,没有步长

    • 127.0.0.1:6379> mset k5 v5 k6 v6
      OK
      127.0.0.1:6379> get k5
      "v5"
      127.0.0.1:6379> get k6
      "v6"
      127.0.0.1:6379> get k3
      (nil)
      127.0.0.1:6379> keys *
      1) "k6"
      2) "k2"
      3) "wusir"
      4) "k1"
      5) "k5"
      127.0.0.1:6379> set k3 v3
      OK
      127.0.0.1:6379> mget k1 k2 k3
      1) "va"
      2) "v2"
      3) "v3"
      127.0.0.1:6379> mset k1 v1 k7 v7
      OK
      127.0.0.1:6379> get k1
      "v1"
      127.0.0.1:6379> getset k1 va
      "v1"
      127.0.0.1:6379> get k1
      "va"
      127.0.0.1:6379> strlen wusir
      (integer) 3
      127.0.0.1:6379> append k1  vava
      (integer) 6
      127.0.0.1:6379> get k1
      "vavava"
      127.0.0.1:6379> set k8 8
      OK
      127.0.0.1:6379> incr k8
      (integer) 9
      127.0.0.1:6379> get k8
      "9"
      127.0.0.1:6379> decr k8
      (integer) 8
      127.0.0.1:6379> get k8
      "8"
      127.0.0.1:6379> incrby k8 10
      (integer) 18
      127.0.0.1:6379> decrby k8 9
      (integer) 9
      127.0.0.1:6379> get k8
      "9"
      127.0.0.1:6379> set name wusir
      OK
      127.0.0.1:6379> keys *
      1) "name"
      2) "k2"
      3) "wusir"
      4) "k5"
      5) "k6"
      6) "k8"
      7) "k1"
      8) "k3"
      9) "k7"
      127.0.0.1:6379> getrange 1,3
      (error) ERR wrong number of arguments for 'getrange' command
      127.0.0.1:6379> getrange name 1,3
      (error) ERR wrong number of arguments for 'getrange' command
      127.0.0.1:6379> GETRANGE name 1 3
      "usi"
      127.0.0.1:6379> get name
      "wusir"
      127.0.0.1:6379> getrange -1 -3
      (error) ERR wrong number of arguments for 'getrange' command
      127.0.0.1:6379> getrange name -1 -3
      ""
      127.0.0.1:6379> getrange name 1 3
      "usi"
      127.0.0.1:6379> getrange name -3 -1
      "sir"
      127.0.0.1:6379>
      

    2.List类型

    lpush:从左边推入
    lpop:从右边弹出
    rpush:从右变推入
    rpop:从右边弹出
    
    • lpush插入
      • 语法:lpush 名称 值1 值2
    • lrange 查看所有
      • lrange 名称 0 -1
    • lpop
      • 移除并返回列表的第一个元素
    • rpop
      • 移删除尾部的值
    • rpush(插入在最后的位置)
      • 语法:rpush 名称 值1 值2,
    • rpushx
      • 将value值插入到Key的尾部,Key必须存在才可以
    • lpushx
      • 将value值插入到Key的头部,Key必须存在才可以
    • 127.0.0.1:6379> auth foobared
      OK
      127.0.0.1:6379> lpush list 11 22
      (integer) 2
      127.0.0.1:6379>  lrange list 0 -1
      1) "22"
      2) "11"
      127.0.0.1:6379> rpush aaa bbb ccc
      (integer) 2
      127.0.0.1:6379> lrange list 0 -1
      1) "22"
      2) "11"
      127.0.0.1:6379> lrange aaa 0 -1
      1) "bbb"
      2) "ccc"
      127.0.0.1:6379> rpush list aaa bbb cc
      (integer) 5
      127.0.0.1:6379> lrange list 0 -1
      1) "22"
      2) "11"
      3) "aaa"
      4) "bbb"
      5) "cc"
      127.0.0.1:6379> keys *
      1) "aaa"
      2) "list"
      127.0.0.1:6379> del aaa
      (integer) 1
      127.0.0.1:6379> keys *
      1) "list"
      127.0.0.1:6379> lpop list
      "22"
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "aaa"
      3) "bbb"
      4) "cc"
      127.0.0.1:6379> rpop list
      "cc"
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "aaa"
      3) "bbb"
      127.0.0.1:6379>
      
    • lindex
      • 从表头开始获取下标为index的value,索引从0开始
    • linsert
      • 将value插入到key指定元素的key前或者后BEFORE AFTER,如果value不存在,则不操作
    • llen
      • 获取列表的长度
    • lrem
      • count >0 从表头向表位,查找指定的个数
      • count=0全部删除
      • count <0 从表尾的方向表头,查找指定的个数
    • lset
      • 置换指定索引位置的value,如果超出索引范围则报错
    • ltrim
      • 列表切片
    • 127.0.0.1:6379> keys *
      1) "list"
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "aaa"
      3) "bbb"
      127.0.0.1:6379> linde list 1
      (error) ERR unknown command 'linde'
      127.0.0.1:6379> lindex list 1
      "aaa"
      127.0.0.1:6379> linsert list before aaa hello
      (integer) 4
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "hello"
      3) "aaa"
      4) "bbb"
      127.0.0.1:6379> linsert list after aaa hhh
      (integer) 5
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "hello"
      3) "aaa"
      4) "hhh"
      5) "bbb"
      127.0.0.1:6379> llen list
      (integer) 5
      127.0.0.1:6379> lpush list aaa
      (integer) 6
      127.0.0.1:6379> lrange list 0 -1
      1) "aaa"
      2) "11"
      3) "hello"
      4) "aaa"
      5) "hhh"
      6) "bbb"
      127.0.0.1:6379> lrem list 1 aaa
      (integer) 1
      127.0.0.1:6379> lrange list 0 -1
      1) "11"
      2) "hello"
      3) "aaa"
      4) "hhh"
      5) "bbb"
      127.0.0.1:6379> lpush list bbb
      (integer) 6
      127.0.0.1:6379> lrange list 0 -1
      1) "bbb"
      2) "11"
      3) "hello"
      4) "aaa"
      5) "hhh"
      6) "bbb"
      127.0.0.1:6379> lrem list -1 bbb
      (integer) 1
      127.0.0.1:6379> lrange list 0 -1
      1) "bbb"
      2) "11"
      3) "hello"
      4) "aaa"
      5) "hhh"
      127.0.0.1:6379> lpush list hhh
      (integer) 6
      127.0.0.1:6379> lrange list 0 -1
      1) "hhh"
      2) "bbb"
      3) "11"
      4) "hello"
      5) "aaa"
      6) "hhh"
      127.0.0.1:6379> lrem list 0 hhh
      (integer) 2
      127.0.0.1:6379> lrange list 0 -1
      1) "bbb"
      2) "11"
      3) "hello"
      4) "aaa"
      127.0.0.1:6379> lset list 1 zbh
      OK
      127.0.0.1:6379> lrange list 0 -1
      1) "bbb"
      2) "zbh"
      3) "hello"
      4) "aaa"
      127.0.0.1:6379> ltrim list 1 3
      OK
      127.0.0.1:6379> lrange list 0 -1
      1) "zbh"
      2) "hello"
      3) "aaa"
      127.0.0.1:6379>
      
      

    3、hash型

    • 存储类型
      • {"db":{"redis":"redis.conf","mysql":"mysql.conf","ningx":"ningx.conf"}}
        
      • 127.0.0.1:6379> hset db redis redis.conf
        (integer) 1
        127.0.0.1:6379> hset db mysql mysql.conf
        (integer) 1
        127.0.0.1:6379> hset db ningx ningx.conf
        (integer) 1
        127.0.0.1:6379> hget db mysql
        "mysql.conf"
        127.0.0.1:6379> hgetall db
        1) "redis"
        2) "redis.conf"
        3) "mysql"
        4) "mysql.conf"
        5) "ningx"
        6) "ningx.conf"
        127.0.0.1:6379>
        
    • HSET
      • 给hash增加key value值
    • HLEN
      • 获取hash的长度
    • hget
      • 获取 hash里面的key和value值
      • 语法:hget hashname key
    • hgetall
      • 获取所有的键值对
    • hmset
      • 批量增加键值对
    • hmget
      • 批量获取键值对
    • hsetnx
      • 给指定的hash增加键值对,如果原来的Filed存在,则操作无效,如果不存在则创建
    • hkeys
      • 获取hash所有的field
    • hvals
      • 获取hash中所有的value
    • hdel
      • 删除hash表中一个或者多个filed
    • hexists
      • 判断hash表中是否存在,如果存在为1,不存在为0
    • hincrby
      • 给hash表中的数字,增加指定的数值,只限数值
    • hincrbyfloat
      • 给hash表中的数字,增加指定的浮点数值,只限数值
    • 127.0.0.1:6379> hgetall db
      1) "redis"
      2) "redis.conf"
      3) "mysql"
      4) "mysql.conf"
      5) "ningx"
      6) "ningx.conf"
      127.0.0.1:6379> HLEN db
      (integer) 3
      127.0.0.1:6379> hmset ac 1 2 2 3 3 4 4 5 5 6
      OK
      127.0.0.1:6379> hmget ac 1 2 3 4 5
      1) "2"
      2) "3"
      3) "4"
      4) "5"
      5) "6"
      127.0.0.1:6379> hkeys ac
      1) "1"
      2) "2"
      3) "3"
      4) "4"
      5) "5"
      127.0.0.1:6379> hvals db
      1) "redis.conf"
      2) "mysql.conf"
      3) "ningx.conf"
      127.0.0.1:6379> hdel ac 5
      (integer) 1
      127.0.0.1:6379> hkeys ac
      1) "1"
      2) "2"
      3) "3"
      4) "4"
      127.0.0.1:6379> hexists db mysql
      (integer) 1
      127.0.0.1:6379> hexists db sqlserver
      (integer) 0
      

    4、SET型

    • sadd
      • 给集合添加值,如果存在则保留,什么都不操作,如果值不存在则添加
    • smembers
      • 获取所有的成员
    • SCARD
      • 获取集合个数
    • sdiff
      • 获取两个集合差集,前面存在的但是后面不存在的元素
    • sinter
      • 获取两集合的交集
    • sunion
      • 获取两集合并集
    • sismember
      • 判断元素是否在集合内,存在为1,不存在返回0
    • smove
      • 将指定的元素从一个集合移动到另一个集合中,如果源集合存在则移动,如果不存在则忽略;如果目标集合存在直接移动,如果目标集合不存在则新建并移动;
    • spop
      • 随机删除指定个数的元素,并把删除的元素打印出来
    • srandmeber
      • 随机获取指定个数元素

      • 如果count>0

        • count>集合总数,全部取出
        • count小于集合总数,则随机取出count个
      • 如果count<0,则随机count次取出值

    • SREM
      • 删除集合中的指定一个或者多个元素
    • 127.0.0.1:6379> sadd col k1 k1 k1 k2 k3 k2
      (integer) 3
      127.0.0.1:6379> smembers col
      1) "k2"
      2) "k3"
      3) "k1"
      127.0.0.1:6379> scard col
      (integer) 3
      127.0.0.1:6379> sadd coo k1 k5
      (integer) 2
      127.0.0.1:6379> sdiff col coo
      1) "k2"
      2) "k3"
      127.0.0.1:6379> sinter col coo
      1) "k1"
      127.0.0.1:6379> sunion col coo
      1) "k2"
      2) "k5"
      3) "k3"
      4) "k1"
      127.0.0.1:6379> sismember col k4
      (integer) 0
      127.0.0.1:6379> sismember col k3
      (integer) 1
      127.0.0.1:6379> spop col 2
      (error) ERR wrong number of arguments for 'spop' command
      127.0.0.1:6379> SPOP col
      "k2"
      127.0.0.1:6379> srem col k3
      (integer) 1
      

    5、ZSET

    有序集合

    • zadd
      • 添加
    • zrange
      • 遍历
    • 127.0.0.1:6379> zadd a 1 123
      (integer) 1
      127.0.0.1:6379> zadd a 2 123
      (integer) 0
      127.0.0.1:6379> zadd a 3 1234
      (integer) 1
      127.0.0.1:6379> zrange a 0 -1
      1) "123"
      2) "1234"
      127.0.0.1:6379>
      

    刚刚学习,如有错误欢迎指正;

  • 相关阅读:
    Android Studio 2.2.2导入Eclipse中创建的项目
    mvc上传到云虚拟机的问题解决
    基于矢量数据的逆地理编码功能实现
    离线地图解决方案(二):地图基本控制
    离线地图解决方案(一):加载瓦片地图
    离线地图解决方案
    openlayers应用“四”:百度地图纠偏续
    openlayers应用“三”:百度地图纠偏
    openlayers应用(二):加载百度离线瓦片
    openlayers3应用一:显示百度地图
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/15467884.html
Copyright © 2011-2022 走看看