• 09-MySQL reids


    redis 基本操作

    1. 什么是Redis

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
    
    Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
    
    Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

    进入redis

    redis-cli 
    #不能进入,就安装:
    sudo apt-get update
    sudo apt-get install redis-server

    redis五种数据类型、及操作

    • string 字符串

    • list 列表

    • hash 哈希

    • set 集合

    • sorted sets 有序集合

    key 有5中数据类型:string、list、set、zset(sorted set)、hash。

    value :都是字符串类型的

    string

    #设置
    set key value     例:   ( set name 'jianeng' )
    #  获取
    get key           例:   ( get name   )
    # key是唯一的,不能用同一个key 不然就会覆盖
     

    查看过期时间

    # -1 表示永久     -2 表示 不存在
    ttl key         例:    ( ttl name )
     

    设置过期时间

    # 给已经存在 key,设置过期时间
    expire key seconds   例:  ( expire name 20  )
    # 设置 key的同时,设置过期时间
    set key value ex seconds   例: ( set age 18 ex 20 )
    setex key seconds value    例: ( setex sex 20 '男' )
     

    追加

    # 给已有的value,再添加新的值
    # append key value
    append name  love
    #get name
    redis 里面所有的 value。 都是字符串类型的
     

    设置 / 获取 多个

     
    #设置多个 string
    mset key value  key value..
    例子
    mset username 'jianeng'  password  '123'
    #获取多个
    mget key key key ...
    mget username password name 
     

    key 操作

    # 查看所有的key
     keys *
     keys n*
    # 删除
     del key        例:  (del name)
     
    # 查看key是否存在  ,存在返回 1, 不存在返回 0
     exists key 
    # 查看key类型
     type key
     
    运算
    set num 1    # 自动识别,字符串里面的 整数
    # +1
    incr key        例 (incr num)
    # -1
    decr key        例 (decr num)
    # +整数
    incrby key increment              例 (incrby num 50)
    # -整数
    decrby key increment              例 (decrby num 50)
     

    list

    • 设置

      #lpush  左添加  (栈)
      lpush  key  value     #例  lpush my_list a b c d
      #rpush  右添加   (队列)
      rpush  key  value     #例  rpush my_rlist a b c d
       
    • 查看

      # lrange  key  start  stop
      例  查看所有
      lrange my_list 0 -1
       
    • 获得list的元素个数

       
      llen key        #例  llen  my_list  
       
    • 查看位于lindex 位置上的元素

      lindex key  index    #例 lindex my_list  3
       
    • 删除

      • lpop 删除左边第一个

        lpop key        #例 lpop  my_rlist
         
    • rpop 删除右边第一个

       
      rpop key        #例 rpop  my_list
       
    • lrem 删除指定

      rpush  test_list  a a b b c d e a d f m c
      #lrem  key count  value
      #count > 0 从左往右 删除数量为count的value
      例 : lrem test_list 2 a
      #count = 0 删除所有的 value
      例 : lrem test_list 0 a
      #count < 0 从右往左 删除数量为count的value
      例 : lrem test_list -1 b
       

    hash

    • 设置

      #  hset key field value
      例  user { name:jianeng}
      hset user name jianeng
       
    • 获取

      #  hget key field
      hget user name
       
    • 删除

      #  hdel key field
      hdel user name
       
    • 设置多个

      #hmset key field value [field value]
      例  user{name:jianeng , age:18, sex:male }
      hmset user name jianeng age 18 sex male
       
    • 获取多个

      # hmget key field field
      hmget user name age
    • 获取全部field value

      # hgetall key 
      例     itmes
      hgetall user
    • 获取所有的field

      # hkeys key
      例      keys
      hkeys user
    • 获取所有的value

      # hvals key 
      例     values  
      hvals user
    • 获取field的个数

      # hlen key
      例    
      hlen user
       

    set 集合

    • 设置

      # sadd key value [value]    (唯一,无序)
      sadd my_set m n b v c x z b
       
    • 获取

      # smembers key
      smembers my_set
       
    • 删除

      • srem指定删除

        # srem key member
        srem my_set c
         
      • spop随机删除

        # spop  key
        spop my_set
         
    • 移动一个集合的值到另一个集合

      # smove oldkey newkey member
      smove my_set my_set2 z
       
    • 判断集合存在某个值

      # sismember key value
      sismember my_set2 b   
       
    • 交集

      # sinter key1 key2 ..
      sinter my_set my_set2
       

      把 key1 key2的交集合并到newkey

      # sinterstore newkey key1 key2
      sinterstore  new_set my_set my_set2 
    • 并集

      # sunion key1 key2 ...
      sunion my_set my_set2
       

      把 key1 key2的并集合并到newkey

      # sunionstore newkey key1 key2
      sunionstore new_set2 my_set my_set2
       
    • 差集

       
      # sdiff key1 key2
      sdiff my_set my_set2
       

      把 key1 key2的差集合并到newkey

      # sdiffstore newkey key1 key2
      sdiffstore new_set3 my_set my_set2
       
    • 获取集合个数

      # scard key
      scard my_set
       
    • 随机返回一个

      # srandmember key
      srandmember my_set
       

    zset

    • 设置

      # zadd key score member
      zadd  my_zset 1 'one'
      zadd  my_zset 2 'two'
      zadd  my_zset 3 'three'
      zadd  my_zset 4 'four'
      zadd  my_zset 5 'five'
       
    • 获取

      • zrange

         
        #zrange key start stop    (withscores)
        zrange my_zset 0 -1  withscores
         
      • zrevrange倒序

        #zrevrange key start stop
        zrevrange my_zset 0 -1  withscores
    • 删除

      #zrem key member
      zrem my_zset two
       
    • 索引

      • zrank正序

        # zrank key member
        zrank my_zset three
         
      • zrevrank反序

         
        # zrevrank key member
        zrevrank my_zset three 
    • zcard 查看有序集合元素数

      # zcard key
      zcard my_zset
       
    • zrangebyscore 返回集合中 score 在给定区间的元素

      # zrange my_zset 0 -1 withscores
       zrangebyscore my_zset 2 3 withscores
      #返回了 score 在 2~3 区间的元素
    • zcount 返回集合中 score 在给定区间的数量

      # zcount key min max
      zcount my_zset 2 3
       
    • zscore : 查看score值

       
      # zscore key member
      zscore my_zset two
    • zremrangebyrank : 删除集合中排名在给定区间的元素(正向)

      # zrange my_zset 0 -1 withscores
      zremrangebyrank my_zset 1 3
       
    • zremrangebyscore : 删除集合中 score 在给定区间的元素

      # zrange my_zset 0 -1 withscores
      zremrangebyscore my_zset 3 5
       

    Redis发布和订阅

    #发布 
    publish 频道 消息
    
    
    # 订阅
    subscribe 频道
  • 相关阅读:
    前后端分离,如何防止接口被其他人调用或恶意重发
    Session,Token相关区别
    【Spring事务的事务属性】
    【Java基础】一些问题
    【Java基础】重写equals需要重写hashcode
    【算法】哈希算法
    MySQL事务隔离级别
    @InitBinder装配自定义编辑器
    自定义转换器
    数据绑定流程
  • 原文地址:https://www.cnblogs.com/Jack-Ma/p/8645643.html
Copyright © 2020-2023  润新知