值得收藏的Redis基础总结

Redis简介

Redis(Remote Dictionary Server)远程字典服务,是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,可以用来做缓存,举个例子,当我们要从数据库查询数据的时候,我们可以首先通过Redis,如果Redis中存在,那么就直接读取Redis中的数据,如果不存在,再去数据库中查询,并把查询的结果放到Redis中,以方便下次直接访问,这样一来就减轻了数据库的压力,而且提高了查询效率,因为Redis数据是在内存中的,所以速度比数据库快。

Redis常用命令

  • 设置键值对
    set myKey abc
  • 获取键值对
    get myKey
  • 查看所有的key
    keys *
  • 删除key,可以删除多个
    del key [key ...]
  • 判断某个key是否存在
    exists key
  • 查看key剩余多久有效时间,-1代表永久,-2代表失效
    ttl key
  • 给key设置有效时间,单位是秒
    expire key seconds
  • 设置key为永久有效
    persist key
  • 查看符合条件的key,“*”代表所有,“?”代表一个字符
    keys pattern
  • 切换数据库,redis中默认有16个数据库,其下标是从0到15,默认是在0数据库中
    select index
  • 从当前数据库中随机返回一个key
    randomkey
  • 修改key的名称
    rename key newkey
  • 将当前数据库中的key移动到指定的数据库中
    move key db
  • 查看key的类型
    type key

Redis五大数据类型

String

String类型是Redis最基本的数据类型一个键最大能存储512MB

  • set用于给key设定值,如果key已经有值了set会复写旧值
    set key value
  • 获取指定key的值,如果key不存在返回nil,如果key存储的不是字符串类型,返回一个错误
    get key
  • 只有key不存在时设置key的值
    setnx key value
  • 获取指定key中的字符串的子字符串
    getrange key start end
  • 返回key所存储的字符串的长度
    strlen key
  • 将key中存储的数字值增加1,如果key不存在,那么key的值会被先初始化为0,然后加1
    incr key
  • 将指定的key自增自定义值
    incrby key increment
  • 将key中存储的数字值减1
    decr key
  • 将指定的key自减自定义值
    decrby key decrement

Hash

Hash特别适合存储对象也就是我们的JavaBean,每个hash可以存储2^32 - 1个键值对,可以看成是一个key和value的map容器

  • 为指定的key设定field/value,key可以理解为是数据库表中的一行数据,field可理解为是字段,value就是值
    hset key field value
  • 同时可以设置多个,对应hash表中的key
    hmset key field value[filed value ...]
  • 获取存储在hash中中的值,根据field获取value
    hget key field value
  • 获取当前key的多个field
    hmget key field value
  • 获取该hash表中所有字段
    hkeys key
  • 获取hash表中字段的数量
    hlen key
  • 获取该key对应的所有字段和值
    hgetall key
  • 删除一个或多个域(也就是我们数据库中的字段)
    hdel key field
  • 只有字段field不存在时,设置hash域的值
    hsetnx key field value
  • 为hash表中指定域的整数值加上增量increment
    hincrby key field increment
  • 查看hash表中指定的域是否存在
    hexists key field

List

Redis中List列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部或尾部,一个列表最多可以包含2^32 - 1个元素,其类似于Java中的LinkedList

  • 将一个或多个值插入到列表的头部,从左侧添加
    lpush key value1 [value2]
  • 将一个或多个值插入到列表的尾部,从右侧添加
    rpush key value1 [value2]
  • 遍历一个列表,从起始下标到中止下标,-1代表最后一个
    lrange key start stop
  • 获取列表的长度
    llen key
  • 通过索引获取列表元素的值
    lindex key index
  • 从左删除列表的第一个元素,返回被删元素的值
    lpop key
  • 从右删除列表的第一个元素
    rpop key
  • 移除并获取列表的第一个元素,如果列表中没有元素,会阻塞列表直到等待超时或者发现可弹出元素,单位是秒
    blpop key timeout
  • 移除并获取列表的最后一个元素,如果列表中没有元素,会阻塞列表直到等待超时或者发现可弹出元素
    brpop key timeout
  • 对列表进行修剪,只保留指定区间的元素
    ltrim key start stop
  • 通过索引设置指定元素的值
    lset key index value
  • 在指定元素前或后插入值
    linsert key before | after privot value
  • 将第一个列表中最后一个元素移除,并添加到第二个列表中第一个位置
    rpoplpush source destination
  • 将本列表的最后一个元素移动到第一个位置
    rpoplpush source destination

Set

Redis的Set是String类型的无序集合,集合成员是唯一的,不能重复,底层是intset和hashtable两种数据结构,intset我们可以理解为数组,该数组是有序的,查找时通过二分,hashtable就是普通的哈希表

  • 给指定集合添加值
    sadd key member
  • 获取集合的大小
    scard key
  • 获取集合的所有值,无序的
    smembers key
  • 判断member元素是否是集合key的成员
    sismember key member
  • 返回一个或多个随机set值,count可以不写默认返回一个
    srandmember key [count]
  • 移除集合中一个或多个成员
    srem key member1 [member2]
  • 随机移除count个元素,并返回这count个元素,不写默认为1
    spop key [count]
  • 将第一个集合中的元素移动到第二个集合
    smove source destination member
  • 第一个集合和第二个集合的差集,以第一个集合为准
    sdiff key [key...]
  • 集合的交集
    sinter key [key...]
  • 并集
    sunion key [key...]

ZSet

Redis中ZSet集合和普通集合一样,也是String类型元素的集合,也不能重复,不同的是每个元素都会关联一个float类型的分数,redis正是通过分数来为集合中的成员进行从小到大排序的,该分数是可以重复的

  • 添加一个或多个有序集合,该集合有一个分数,用来排序
    zadd key score member
  • 获取有序集合中的成员数
    zcard key
  • 获取指定范围集合的值,默认从低到高
    zrange key start stop
  • 获取指定范围分数的集合元素的个数
    zcount key min max
  • 返回指定元素的下标
    zrank key member
  • 获取指定范围集合的值,从高到低
    zrevrange key start stop
  • 移除集合中的指定的一个或多个元素
    zrem key member [member...]
  • 移除有序集合中给定的排名区间的所有成员,默认是从低到高排名,第一名是0
    zremrangebyrank key start stop
  • 移除有序集合中分数区间的成员
    zremrangebyscore key min max
发布了467 篇原创文章 · 获赞 325 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/105361156