2020-09-16 redis

redis

  • 用户量增大,请求数量增大数据压力大。多台服务器锁,不互斥。数据不同步。
  • redis是基于内存存储和读取数据的。接受请求是单线程的(相当于锁了,可以把共享数据放在redis里面)
  • Nosql是非关系型数据库,redis就是nosql(key-value)

redis常用命令

  • redis存储数据的结构:常用的5种
    • key-string(一个值):最常用,用于存储一个值
    • key-hash(一个map):存储一个对象数据
    • key-list(列表,有序,即按照存入顺序排序,允许重复):使用list结构实现栈和队列结构
    • key-set(无序,他会自己再排个序,不允许重复):交集,差集,并集的操作
    • key-zset(一个有序的不允许重复集合):排行榜,积分存储等操作


      image.png

string常用命令

  • 添加值: set key value
  • 取值: get key
  • 批量:mset key value [key value.....] mget key [key.....]
  • 自增: incr key(自增1) 点赞功能
  • 自减: decr key(-1)
  • 自增或自减指定数量: incrby key increment; decrby key increment


    image.png

  • 设置值的同时,指定生存空间:setex key second value(每次向redis中添加数据时,尽量都设置上生存时间)
  • 设置值,如果当前key不存在的话,什么事都不做。如果key不存在,和set命令一样: zetnx key value
  • 在key对应的value后,追加内容:append key value
  • 查看value字符串的长度: strlen key


    image.png

hash常用命令

  • 存: hset key field value
  • 取: hget key field
  • 批量: hmset key field value [field value.....]; hmget key field [field..]


    image.png

  • 自增 指定值: hincrby key field increment (可以是负数)
  • 设置值,如果key-field不存在,就添加,存在,就不操作:hsetnx key field value
  • 检查field是否存在 : hexists key field
  • 删除某一个,多个field:hdel key field[field....]


    image.png

  • 获取全部 :hgetall key
  • 获取全部field: hkeys key
  • 获取全部value: hvals key
  • 获取当前hash结构中field的数量: hlen key


    image.png

list常用命令

  • 存:(从左侧)lpsuh key value[value....]; (右侧插入)rpush key value[value...]
  • 存(如果key不存在,什么都不做。如果key存在,但是不是list结构,什么都不做): lpushx key value; rpushx key value
  • 存(指定索引):lset key index value


    image.png

    image.png

  • 获取数据,弹栈,数据会移除(左侧,右侧):lpop key; rpop key
  • 获取指定索引范围的数据(start从0开始,stop,输入-1是最后一个,-2是倒数第二个): lrange key start stop
  • 获取指定索引位置的数据: lindex key index
  • 获取长度:lline key


    image.png

  • 删除列表中的数据(删除的是当前list中的count个value值,count大于0是左侧从右侧删除,count小于0,是从右边开始删, count等于0,是删除全部value):lrem key count value
  • 保留列表中的数据(指定范围,超出范围的数据都会被移除):ltrim key start stop

set常用命令

  • 存储数据: sadd key member [member....]
  • 获取数据 : (全部数据)smembers key ;(随机获取一个数据):spop key [count] (count默认为1)(获取的同时,会移除数据)


    image.png

  • 交集: sinter set1 set2 ....
  • 并集: sunion set1 set2....
    -差集: (获取多个集合中不一样的数据) sdiff set1 set2 ....


    image.png

  • 删除数据: srem key member[member...]
  • 查看是否包含: sismember key member


    image.png

zset常用命令

  • 添加: zadd key score member [score member...] (score必须是数值,member不允许重复)
  • 修改member分数: zincrby key increment member(如果member存在于key,则正常添加分数。如果member不存在,就相当于zadd)
  • 查询指定member的分数:zscore key member
  • 获取zset中数据的数量: zcard key
  • 查询一定分数范围的数量: zcount key min max
  • 删除zset中的成员:zrem key member[member...]


    image.png

  • 根据分数,从小到大,获取指定范围的数据:zrange key start stop [withscores] (如果withscores添加了,会反胃member的具体分数,不加就不返回分数)
  • 根据分数排序 从大到小排序:zrevrange key start stop [withscores]
  • 根据分数的返回获取数据:zrangescore key min max[withscores]

你可能感兴趣的:(2020-09-16 redis)