Redis学习笔记---数据类型一(string、list、hash)

一、string

     string字符串类型是字符串redis最基本的数据类型,可以存储任何形式的内容包括图片,string类型的可以存储的最大容量是1G。
    命令:
   ① set key value/get key 创建键值对和获取 

        举例:set a 3/get a

   ② setnx key value 如果key已经存在则不会再添加

   ③ mset/mget 批量设置和获取

        举例: mset b 2 c3 ...  mget b c 

   ④ incr/decr/incrby/decrby/incrbyfloat 对某个键值递增递减、按照步长递增和递减

        举例:incr/decr a   incrby/decrby a 2 incrbyfloat a 0.1

    ⑤append  

        举例:append name aaa  相当于字符串拼接

    ⑥strlen  获取字符串的长度 

        举例:strlen name

二、list

      介绍:    
      list是一个有序的字符串列表,列表内部实现使用双向列表(linked list)实现的,list也可以作为一个队列进行使用
    命令:
   ① lpush/rpush/lpop/rpop  左右插入 左右弹出

        举例:lpush list 1 lpush 2 rpush 3 rpush 4 list中的值的顺序是:2134  也可以使用lpush list 5 2 3 4 添加多个值
        pop是弹出,弹出后列表中的数据就没了,既是出栈操作
        lpush和rpop组合起来就是一个先进先出的队列
   ②llen/lrange(-1表示最后一个元素的位置) llen是返回list列表的长度
        lrange取出指定范围的数据,下标从0开始到llen-1  lrang 0 -1 表示取出list中所有的数据集合
   ③lrem(lrem key count value)count分为三种情况  删除
        count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
        count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
        count = 0 : 移除表中所有与 value 相等的值。
   ④lindex(查询指定角标数据)  

        举例:lindex list 2 获取list中角标为2的元素

   ⑤lset(修改)    

        举例:lset list 2 6 将list角标为2的数据修改为6
   ⑥ltrim(截取)

        举例:ltrim list 0 2 截取list列表,从角标0到2
   ⑦linsert(向指定元素前后插入元素)  

        举例:linsert list before/after 6 2在list列表的元素6前后插入一个数据2
   ⑧rpoplpush:将元素从一个列表转到另一个列表  rpopllist list list1  将list中的元素又边弹出一个从左侧插入到list1

三、hash

    介绍:
    hash类型存储了字段与字段值的映射,就是java中的map对象那样,hash的字段与字段值必须是字符串,不支持其他的数据类型,hash的键最多可以存储2的三十二次方减一的字段
    hash适合存储的对象如下图:
    对一个user对象可以存为键是user的与id的组合,字段是属性,字段值即属性值,redis中可以动态的增减字段与字段值,不会像关系型数据库那样造成数据的冗余
                                                    普通关系型数据库存储方式
Redis学习笔记---数据类型一(string、list、hash)_第1张图片
Redis学习笔记---数据类型一(string、list、hash)_第2张图片
                                        redis存储方式
    命令:
    ①hset/hget/hmset/hmget/hgetall(hsetnx)
    

        举例:hset user:100 name zhangsan

        hset user:100 age 20
        hget user:100 name/age
        hmset user:100 gender 0 birthday 1990-11-03
        hmget user:100 gender birthday
        hgetall顾名思义,hsetnx和string的setnx一样,如果字段存在则不插入
    ②hexists,判断键中的属性是否存在  hexists user:100 name
    ③hincrby(hash类型没有hincr命令) hincrby user:100 age 2
    ④hdel  hdel user:100 gender
    ⑤hkeys/hvals  hkeys/hvals user:100  获取键的所有字段/字段值
    ⑥hlen(获取键中包含多少个字段)



你可能感兴趣的:(redis数据类型hash,redis数据类型string,redis数据类型list,redis数据类型set)