Redis五大基本数据类型和特殊数据类型用法

亲测有效 #后面为方法注释

Redis-Key类型

    keys *        #查看所有的key
    set name linailong   #set key   
    keys   *
    结果为:name
    set age 1
    keys *
    结果为:"age" "name"
    exists name  #判断当前key是否存在
    结果为: 1     1 为存在
    expire  name   10   #设置key 过期时间  单位秒
    ttl name   #查看key剩余时间
    type name  # 查看当前key的一个类型

String类型

    set key1 v1     #设置值
    get key1         #获取值
    exists  key1       #判断一个key是否存在
    append key1"hello"     #追加字符串,如果当前key不存在,就相当于set key
    strlen key1         #获取字符串长度
    ---------------------------------------------------------------------------------------------------------------------
    i++
    步长 i+=
    set views 0    #初始化浏览量为0
    incr views     #自增1  浏览量别为1
    decr  views    #自减1  浏览量减1
    incrby  views  10    #可以设置步长,指定增量,这里增量为10
    decrby  views  3    #可以设置步长为3,指定减量  这里减量为3

    ---------------------------------------------------------------------------------------------------------------------

    字符串范围 range
    set key1 "hello,linailong"        #设置key1的值
    getrange key1 0 3        #截取字符串[0,3]
    结果为:hell
    getrange key1  0 -1     #获取全部的字符串
    结果为:hello,linailong

    ---------------------------------------------------------------------------------------------------------------------
    替换
    set key2 abcdefg
    setrange key2 1 xx        #替换指定下标开始的字符串
    结果为:axxdefg

    ---------------------------------------------------------------------------------------------------------------------
    setex(set  with  expire)        #设置过期时间
    setnx(set if not exist)          #key不存在则设置(在分布式锁中经常用到)
    setex key3 30 "hello"        #设置key3的值为hello  30秒后过期
    setnx mykey  "redis"        #如果mykey不存在创建mykey
    setnx mykey "MongoDB"     #如果mykey存在,创建失败
    get mykey      #结果依然为redis不是MongoDB

    ---------------------------------------------------------------------------------------------------------------------

    mset
    mget
    mset k1 v1 k2 v2 k3 v3         #同时设置多个值
    keys *
    结果为 k1 k2 k3
    mget k1 k2 k3          #同时获取多个值
    结果为:v1 v2 v3
    msetnx k1 v1 k4 v4         #msetnx是一个原子性操作,要么一起成功要么一起失败
    get k4
    结果为:(nil)

    ---------------------------------------------------------------------------------------------------------------------

     对象
     set user:1{name:zhangsan,age:3}     # 设置一个user:1对象值为json字符串来保存一个对象
             #这里的key是一个巧妙的设计user:{id}:{filed},如此设计在redis中完全可以
    mset user:1:name zhangsan  user:1:age 2   
    mset user:1:name  user:1:age
    结果为:zhangsan  2

    ---------------------------------------------------------------------------------------------------------------------

    getset    #先get然后在set
    getset db redis        #如果不存在值,则返回(nil)
    get db  
    结果为:redis
    getset db mongodb    #如果存在值,获取原来的值并设置新的值
    结果为:redis
    get db
    结果为:"mongodb    "

     ---------------------------------------------------------------------------------------------------------------------
    小结:
            String类似的使用场景:value除了是我们的字符串还可以是我们的数字
            1,计数器
            2,统计多单位的数量
            3,分数数
            4,对象缓存存储

List类型
:所有list命令都是用l开头的

    LPUSH list one      #将一个值或多个值,插入到列表头部(左)
    LPUSH list  two    
    LPUSH list three
    lrange list 0 -1         #获取当前list中的值
    结果为:three,two,one
    lrange list 0 1        #通过区间获取具体的值
    结果为:three,two
    Rpush list right        #将一个值或者多个值,插入到列表头部(右)
    Lrange list 0 -1
    结果为:three,two,one,right  

---------------------------------------------------------------------------------------------------------------------

     LPOP
     RPOP
     lpop list        #移除list的第一个元素
     结果为:移除three
     rpop list        #移除list的最后一个元素
     结果为:right



 ---------------------------------------------------------------------------------------------------------------------

    llen  #返回列表的长度
    llen list        #返回列表的长度

 ---------------------------------------------------------------------------------------------------------------------

  lrem        #移除指定的值
  lrem list 1 one        #移除list集合中指定个数的value精确匹配
 ---------------------------------------------------------------------------------------------------------------------

 rpoplpush        #移除列表的最后一个元素,将他移动到新的列表中
 rpush mylist hello
 rpush mylist  hello1
 rpush mylist  hello2
 rpoplpush mylist myotherlist         #移除列表的最后一个元素,将他转移到新的列表中
 lrange mylist 0 -1
 结果为:hello,hello1
 lrange myotherlist 0 -1
 结果为hello2 

---------------------------------------------------------------------------------------------------------------------
lset        #将列表中指定下标的值替换成为另一个值,更新操作
lpush list value1
lrange list 0 0
结果为:value1
lset list 0 item
lrange list 0 0 
结果为:item
        #注意,如果下标不存在这报ERR index out of range

---------------------------------------------------------------------------------------------------------------------

小结:
    1,list实际上是一个链表,
    2,如果key不存在,创建新的链表
    3,如果key存在,新增内容
    4,如果移除了所有的值,空链表,也代表不存在
    5,在两边插入或者改动值,效率最高!中间元素,相对来说效率第一点

Set类型
sadd myset hello #向set集合中添加数据

    smembers myset     #查看set中所有的值
    sismember myset hello     #判断一个值在不在set中
    scard myset        #获取set中的内容元素
    srem myset hello        #移除set集合中指定的元素    

   ---------------------------------------------------------------------------------------------------------------------

   因为set无序不重复集合,随机抽取
   srandmember  myset        #随机抽取一个元素
   srandmember  myset        #随机抽取指定数量元素

你可能感兴趣的:(Redis五大基本数据类型和特殊数据类型用法)