美文网首页
Redis基本操作

Redis基本操作

作者: Python野路子 | 来源:发表于2018-08-31 22:00 被阅读0次

    NoSQL(Not Only SQL)

    NoSQL指的是非关系型数据库,是对不同于传统关系型数据库的数据库管理系统简称,NoSQL是web2.0时代海量数据催生的产物。

    特点:

    1. 不支持SQL语法
      NoSQL的世界中没有通用的语言,每种nosql数据库都有自己的语法,以及擅长的业务场景。
    2. 读写性能高
      NoSQL数据库都具有非常高的读写性能,尤其在海量数据下,它的表现非常优秀。
    3. 灵活的数据模型
      NoSQL的存储方式十分灵活,存储方式可以是JSON文档、键值对(key-value)或者其他方式。

    redis 基本操作

    1. 什么是Redis

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

    redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便

    • Redis特点:
      Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
    • Redis应用场景:
      因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
      将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
    关系型数据库和非关系数据库的区别
    • 关系型数据库
      表和表之间存在的关系
    • 非关系型数据库
      不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的。
    安装redis
     sudo apt-get update
     sudo apt-get install redis-server
    
    进入redis
    redis-cli   
    redis-cli   --raw    #能显示中文
    
    exit        #退出
    
    #Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
    #默认使用 0 号数据库   默认开16个库
    SELECT 1    # 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]
    

    redis五种数据类型、及操作

    • string 字符串
    • list 列表
    • hash 哈希
    • set 集合
    • sorted sets 有序集合
    key 有5中数据类型:string、list、set、zset(sorted set)、hash。
    value :都是字符串类型的(可加引号也可不加)

    string

    string是redis最基本的类型,一个key对应一个value

    设置
        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 操作

    对redis五个数据类型都适用的命令。

    查看所有的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

    List类型是一个字符串列表,可以在列头或列尾添加/删除数据,在插入数据时,如果该键不存在,redis将为该键创建一个。

    添加
          #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
    
         #查看位于lindex 位置上的元素 ,返回列表中元素的值。index从0开始,当index超出索引时返回null
          lindex key  index    #例 lindex my_list  3
    
    获得list的元素个数
          llen key        #例  llen  my_list  
    
    设置,修改数据
    #指定索引号进行修改
    lset key index value 
    
    删除
      - 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

    是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值

    设置
          #  hset key field value
          #将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;
          例  user { name:jianeng}
          hset user name jianeng
    
          #设置多个
          #hmset key field value [field value]
          例  user{name:jianeng , age:18, sex:male }
          hmset user name jianeng age 18 sex male
    
    获取
          #  hget key field
          例
          hget user name
    
          #获取多个
          # hmget key field field
          例
          hmget user name age
    
    删除
          #  hdel key field
          例
          hdel user name
    
    获取全部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 集合

    元素为string类型
    无序集合
    元素具有唯一性,不重复

    设置
      # sadd key value [value]    (唯一,无序)
      #将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,
      例
      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

    类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
    zset的成员是唯一的,但分数(score)却可以重复。

    设置
          # 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 频道
    

    设置密码

    1. 先找到配置文件 
       cd  /etc/redis  
    2. 修改redis.conf
       sudo vim redis.conf
       2.1 找到 requirepass --> 正常来说应该是在你的第396行 
        /requirepass  -->  vim 查找字符串
        # requirepass foobared  
       2.2 只需要更改 foobared  去掉注释
        requirepass 自己定义的密码
       2.3 保存退出
        :wq
    3. 重启服务
       sudo service redis-server restart
    4. redis-cli -- 先进去
       auth  自己密码
    

    相关文章

      网友评论

          本文标题:Redis基本操作

          本文链接:https://www.haomeiwen.com/subject/bwqewftx.html