zoukankan      html  css  js  c++  java
  • Redis系列二:Redis支持的数据类型和使用方法(一)

    一、String类型
    String类型是二进制安全的,使用String类型缓存一些静态文件,如图片、CSS,可以提高网站的运行速度
    1)常用命令
    127.0.0.1:6379> set booka "Redis"
    OK
    127.0.0.1:6379> setnx booka "test"
    (integer) 0
    127.0.0.1:6379> get booka
    "Redis"
    127.0.0.1:6379> getset bookb "php"
    (nil)
    127.0.0.1:6379> getset booka "php"
    "Redis"
    127.0.0.1:6379> get booka
    "php"
    127.0.0.1:6379>

    set booka "Redis" : 设置key为booka,值为Redis

    setnx booka "test":setnx命令,如果booka不存在,则设置key为booka,值为test的string类型的值;如果booka存在则返回0
    get booka:获取key为booka的值
    getset bookb "php":getset命令,先获取key为bookb的key值,如果没有则返回nil,如果有则将key为bookb的value设置为php
     
    127.0.0.1:6379> mset test1 "hello" test2 "hello2" test3 "hello3"
    OK
    127.0.0.1:6379> get test3
    "hello3"
    127.0.0.1:6379> get test2
    "hello2"
    127.0.0.1:6379> get test3
    "hello3"
    127.0.0.1:6379> mget test1 test2 test3
    1) "hello"
    2) "hello2"
    3) "hello3"
    127.0.0.1:6379>

    mset 命令:一次设置多个key值,成功返回ok,表示所有值都设置了;失败返回0,表示没有值被设置

    mget命令:一次获取多个key值,如果对应的key不存在则返回nil
     
    127.0.0.1:6379> mget test1 test2 test3
    1) "hello"
    2) "hello2"
    3) "hello3"
    127.0.0.1:6379> msetnx test3 "msetnx" test4 "hello4"
    (integer) 0
    127.0.0.1:6379> mget test1 test2 test3 test4
    1) "hello"
    2) "hello2"
    3) "hello3"
    4) (nil)
    127.0.0.1:6379> msetnx test5 "msetnx" test4 "hello4"
    (integer) 1
    127.0.0.1:6379> mget test4 test5
    1) "hello4"
    2) "msetnx"
    127.0.0.1:6379>

    msetnx命令:一次设置多个key值,如果key有存在的,返回0;否则返回1

     
    127.0.0.1:6379> set int_key 1
    OK
    127.0.0.1:6379> get int_key
    "1"
    127.0.0.1:6379> incr int_key
    (integer) 2
    127.0.0.1:6379> get int_key
    "2"
    127.0.0.1:6379> 
    127.0.0.1:6379> 
    127.0.0.1:6379> get test1
    "hello"
    127.0.0.1:6379> 
    127.0.0.1:6379> incr test1
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> 

    incr 命令对key值加1,并返回新值;如果incr不是一个int的value则会返回错误;incr一个不存在的key,则设置key的value为1

    decr命令和incr命令想法,对key减一
     
    127.0.0.1:6379> get int_key
    "2"
    127.0.0.1:6379> 
    127.0.0.1:6379> 
    127.0.0.1:6379> incrby int_key 2
    (integer) 4
    127.0.0.1:6379> get int_key
    "4"
    127.0.0.1:6379> 

    incrby 命令,对key值追加一个指定的整数,key不存在时设置key,并认为原来的value为0

    decrby命令和incrby相反
     
    二、List类型
      list类型指的是key对应的value是一个双向链表结构,所以list类型提供链表支持的所有操作。
    127.0.0.1:6379> lpush list_key list_value    #向key对应的list头部添加一个字符串
    (integer) 1
    127.0.0.1:6379> lpush list_key list_value_center #向key对应的list尾部添加一个字符串
    (integer) 2
    127.0.0.1:6379> 
    127.0.0.1:6379> llen list_key #返回key对应的list的长度,如果key不存在返回0,如果key对应的类型不是list返回错误
    (integer) 2
    127.0.0.1:6379> lpop list_key #从list头部删除并返回删除元素
    "list_value_center"
    127.0.0.1:6379> lpop list_key
    "list_value"
    127.0.0.1:6379> lpop list_key
    (nil)
    127.0.0.1:6379> llen list_key
    (integer) 0
    127.0.0.1:6379> lpush list_key list_value1
    (integer) 1
    127.0.0.1:6379> lpush list_key list_value2
    (integer) 2
    127.0.0.1:6379> lpush list_key list_value3
    (integer) 3
    127.0.0.1:6379> lpush list_key list_value4
    (integer) 4
    127.0.0.1:6379> lrange list_key 1 2 #返回key为list_key指定区间(1,2)的元素,下标从0开始,负值表示从列表的尾部开始计算,-1表示倒数第一个元素,key不存在返回空列表
    1) "list_value3"
    2) "list_value2"
    127.0.0.1:6379> ltrim list_key 2 3 #截取key为list_key指定区间(2,3)的元素
    OK
    127.0.0.1:6379> lrange list_key 0 5
    1) "list_value2"
    2) "list_value1"
    127.0.0.1:6379> lset list_key 2 hello #设置key为list_key指定下标2的value为hello
    (error) ERR index out of range
    127.0.0.1:6379> lset list_key 1 hello
    OK
    127.0.0.1:6379> lrange list_key 0 5
    1) "list_value2"
    2) "hello"
    127.0.0.1:6379> 

    另外列表还有下面几个命令

    rpop key:从list尾部删除并返回删除的元素
    blpop key1 ... keyn timeout:从左到右扫描 key1 ... keyn ,返回对第一个非空的list进行lpop操作并返回,如果所有的list都是空或者不存在,阻塞timeout秒,timeout为0表示
    一直阻塞。阻塞时,如果有其他的客户端对 key1 ... keyn 中任意一个key进行push操作,阻塞解除并返回。如果超时则返回nil
    brpop  key1 ... keyn timeout:功能与blpop类似,blpop从头部删除,brpop从尾部删除
     
    三、set类型
    set类型是一种无序集合。set数据类型可以快速查找元素是否存在,用于记录一些不能重复的数据。如网站用户名不能重复。
    127.0.0.1:6379> sadd set_key 1 #添加一个string元素到key为set_key对应的集合中
    (integer) 1
    127.0.0.1:6379> scard set_key #返回set元素的个数,如果set为空或者key不存在则返回0
    (integer) 1
    127.0.0.1:6379> sadd set_key 2
    (integer) 1
    127.0.0.1:6379> scard set_key
    (integer) 2
    127.0.0.1:6379> sismember set_key 3 #判断3是否存在于无序集合set_key中,存在返回1,不存在或者key对应的set集合不存在则返回0
    (integer) 0
    127.0.0.1:6379> sismember set_key 1
    (integer) 1
    127.0.0.1:6379> smembers set_key #返回key对应set的所有元素,结果是无序的
    1) "1"
    2) "2"
    127.0.0.1:6379> sadd set_key 3
    (integer) 1
    127.0.0.1:6379> smembers set_key
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> srem set_key 2 #从set_key对应的集合中移除2这个元素,如果2不存在或者set_key不存在则返回0
    (integer) 1
    127.0.0.1:6379> smembers set_key
    1) "1"
    2) "3"
    127.0.0.1:6379> 

    其他命令

    spop key:删除并返回key对应的集合中随机一个元素
    srandmember key:随机取集合中的一个元素,但不删除元素
    smove srckey dstkey member:从scrkey对应的集合中移除member并添加到dstkey对应的集合中
    sinter key1 key2 ... key3:返回所有给定key的交集
    sinterstore dstkey key1 key2 ... key3:同sinter,并将交集存到dstkey对应的集合中
    sunion key1 key2 ... key3:返回所有给定key的并集
    sunionstore dstkey  key1 key2 ... key3:同sunion,并把并集保存到dstkey 对应的集合中
    sdiff key1 key2 ... key3:返回所有给定key的差集
    sdiffstore dstkey key1 key2 ... key3:同sdiff ,并把并集保存到dstkey 对应的集合中
     
    Redis系列二:Redis支持的数据类型和使用方法(一)
  • 相关阅读:
    排序--插入排序(Insertion Sort)Java实现
    汉诺塔--递归和非递归 Java实现
    关于mysql使用utf8编码在cmd窗口无法添加中文数据的问题以及解决 方法二
    mysql在cmd中查询到的汉字乱码问题解决 方法一
    mysql绿色版安装以及遇到的问题
    关于按下回车键自动提交表单问题解决
    获取iframe引入页面内的元素
    ORACLE 中如何截取到时间的年月日中的年、月、日
    Jboss 7配置日志
    java中将科学技术发转为正常数据
  • 原文地址:https://www.cnblogs.com/qmsu/p/5049436.html
Copyright © 2011-2022 走看看