zoukankan      html  css  js  c++  java
  • Redis 常用操作

    一、key的操作

    1、注:在redis里面,“”和空格不能作为key的组成内容。

    2、相关指令:

    exists key 测试指定key是否存在
    del key1 key2... 删除指定key
    type key 返回指定key的value类型
    keys pattern 返回匹配指定模式的所有key,pattern是通配符
     rename oldkey newkey  修改key的名字
     dbsize  返回当前数据库的key数量
     expire key seconds  为key指定过期时间
     ttl key  返回key的剩余过期秒数
     select db-index  选择数据库
     move key db-index  将key从当前数据库移动到指定数据库
     flushdb  删除当前数据库中的所有key
     flushall  删除所有的数据库的所有key

    二、String类型的操作

    1、注:

      ①String是redis最基本的类型

      ②redis的string可以包含任何数据,包括jpg图片或者序列化的对象

      ③单个value的最大上线是1G

      ④如果只用String类型,redis就可以被看作是加上持久化特性的memcache

    2、相关指令:

    set key value 设置key对应的值为String类型的value
    mset key1 value2...keyN valueN...    一次性设置多个key的值
    mget key1 key2...keyN... 一次获取多个key的值
    incr key

    对key的值作加加操作,并返回新值。

    注意:如果是操作新key:创建该key并加1,其值为1;如果是操作已有key:其值的类型必须为整型

    decr key  对key的值作减减操作,并返回新值。
     incrby key number  增加指定值,并返回新值
     decrby key number  减去指定值,并返回新值
     append key value  给指定key的字符串追加value
     substr key start end  截取指定key的字符串

    三、list链表类型

    1、list类型其实就是一个双向链表。通过push、pop操作从链表的头部或尾部添加删除元素。这使得list既可以用作栈,又可以用作队列。

    2、该list链表应用场合:

    例如:获得10个最新的登录用户信息

    select * from user order by login_time desc limit 5;

    以上sql可以实现用户需求,但是数据多的时候,全部数据都要受到影响,对数据库的负载也比较高。必要情况还要给关键字段(如login_time)设置索引,索引也比较耗费系统资源。

    如果通过list链表实现以上功能,可以在list链表中只保留最新的5个数据,每进来一个数据就删除一个旧数据。每次就可以从链表中直接获取需要的数据,极大节省各方面的资源消耗。

    3、相关指令

    lpush key string 在key对应的list的左边添加字符串元素
    lpop key 弹出左部元素,并返回该元素
    rpush key string 在key对应的list的右边添加字符串元素
    rpop key  弹出右部元素,并返回该元素
     llen key  返回list对应的长度,key不存在返回0,key对应的类型不是list返回错误
     lrange key start end  返回指定区间的元素
     ltrim key start end  截取list,保留指定区间内的元素

    四、set集合类型

    1、注:

      ①redis的set是string类型的无序集合

      ②set元素最大可以包含(2的32次方-1)个元素

      ③set集合类型除了基本的添加删除操作,其他有用的操作还包含取并集、交集、差集。

      ④每个集合的各个元素不能重复

    2、相关指令

    sadd key member 添加一个string元素到set集合中,成功返回1
    srem key member1 member2... 从对应key的set中移除元素
    smove key1 key2 member 将member从key1对应的set中移动到key2对应的set中
     scard key  返回set中的集合个数
     sismember key member  判断member是否存在set中
     sinter key1 key2...keyN  返回所有给定key的交集
     sunion key1 key2...keyN  返回所有给定key的并集
     sdiff key1 key2...keyN  返回所有给定Key的差集
     smembers key  返回Key对应的set的所有元素,结果是无序的

    五、Sorted Set排序集合类型

    1、注:

      ①和set一样,Sorted set也是string类型元素的集合

      ②不同的是每个元素都会关联一个权,通过权值可以有序的获取集合中的元素

      ③每个集合的各个元素不能重复

    2、适用场合:

    如获得热门帖子(回复量)信息。

    select * from message order by backnum desc;

    以上需求可以通过简单sql实现,但是sql语句耗费数据库资源。

    3、相关指令:

    zadd key score member 添加元素到集合,元素在集合中存在则更新对应score
    zrem key member 删除指定元素,1表示成功,如果元素不存在则返回0
    zincrby key incr member 按照incr幅度增加对应member的score值,返回score值
    zrank key member 返回指定元素在集合中的排名(下标),集合元素是按score从小到大排序的
    zrevrank key member 同上,但是集合中的元素是按从大到小排序
    zrange key start end 类型lrange操作从集合中去取出指定区间的元素,返回的是有序结果
    zrevrange key start end 同上,但是返回的结果是按score逆序的
    zcard key 返回集合中元素的个数
    zcore key element 返回给定元素对应的score
    zremrangebyrank  key min max 删除集合中排名在给定区间的元素(权值由小到大排序)

    六、hash类型

    1、注:

      ①hash是一个string类型的field和value的映射表

      ②Hash更容易存储对象,比如在设置用户姓名,年龄,邮箱等属性时,用string需要分别来进行设置存储,通过Hash就可以把属性放到对象中,然后再存储对象,因此相对于string类型,Hash类型存储对象可以占用更少的字节

    2、常用指令:

    hset key field value  设置hash field为指定值,如果key不存在,则先创建
    hmset key field1 value1...fieldN valueN 同时设置hash的多个field
    hget key field 获取指定的hash field
    hmget key field1...fieldN 一次获取多个指定的hash field
    hincrby key field integer 将指定的hash field加上给定值
    hexists key field 判断指定field是否存在
    hdel key field 删除指定的hash field
    hlen key 返回指定hash的field数量
    hkeys key 返回hash的所有field
    hvals key 返回hash的所有value
    hgetall key 返回hash的所有field和value
  • 相关阅读:
    利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
    node.js的fs核心模块读写文件操作 -----由浅入深
    node.js 发布订阅模式
    js 发布订阅模式
    vue.js定义一个一级的路由 ----由浅入深
    vue.js编程式路由导航 --- 由浅入深
    vue.js嵌套路由-------由浅入深
    Spring事件体系
    Hibernate监听器
    学习网站地址
  • 原文地址:https://www.cnblogs.com/jxl1996/p/10182580.html
Copyright © 2011-2022 走看看