zoukankan      html  css  js  c++  java
  • Linux 之redis 的安装及使用

    一、redis的优缺点

      redis的优点:

          属于内存型的数据库,存储速度非常快

      redis的缺点:

          断电数据会丢失

          redis服务挂掉之后数据也会丢失

    二、redis的安装

      1、下载redis源码包:

    wget http://download.redis.io/releases/redis-5.0.2.tar.gz

      2、解压缩

    tar -zxvf redis-5.0.2.tar.gz  -C  指定解压目录

      3、编译源文件

    cd  redis-5.0.2
    make  &&  make install

      4、创建redis配置文件

    mkdir -p /opt/redis_conf
    cd /opt/redis_conf
    vim redis-6379.conf
    port 6379                         # 运行在6379的redis数据库实例
    daemonize yes                     # 后台运行redis  
    pidfile /data/6379/redis.pid      # 存放redis pid的文件
    loglevel notice                   # 日志等级
    logfile "/data/6379/redis.log"    # 指定redis日志文件的生成目录
    dir /data/6379                    # 指定redis数据文件夹的目录
    protected-mode yes                # 安全模式
    requirepass   haohaio             # 设置redis的密码

      5、启动redis

    redis-server /opt/redis_conf/redis-6379.conf

      6、连接redis

    使用命令redis-cli进行连接
    参数详解:
    redis-cli  -p 6380  -a  haohaio
        -p  设置redis链接的端口
        -a  显示的填写密码
        --raw 使用原始格式

    三、redis数据结构

    redis是一种高级的key:value存储系统,其中value支持五种数据类型
    字符串(strings)
    散列(hashes)
    列表(lists)
    集合(sets)
    有序集合(sorted sets)
    

      1、string 类型

    • set   设置key
    • get   获取key
    • append  追加string
    • mset   设置多个键值对
    • mget   获取多个键值对
    • del  删除key
    • incr  递增+1
    • decr  递减-
    127.0.0.1:6379> set name 'tt'   #设置key
    OK
    127.0.0.1:6379> get name    #获取value
    "tt"
    127.0.0.1:6379> set name 'tiger'  #覆盖key
    OK
    127.0.0.1:6379> get name    #获取value
    "tiger"
    127.0.0.1:6379> append name ' dsb'   #追加key的string
    (integer) 10
    127.0.0.1:6379> get name  #获取value
    "tiger dsb"
    127.0.0.1:6379> mset user1 'alex' user2 'xiaopeiqi'    #设置多个键值对
    OK
    127.0.0.1:6379> get user1    #获取value
    "alex"
    127.0.0.1:6379> get user2    #获取value
    "xiaopeiqi"
    127.0.0.1:6379> keys *      #找到所有key
    1) "user2"
    2) "name"
    3) "user1"
    
    127.0.0.1:6379> mget user1 user2 name   #获取多个value
    1) "alex"
    2) "xiaopeiqi"
    3) "tiger dsb"
    127.0.0.1:6379> del name        #删除key
    (integer) 1
    127.0.0.1:6379> get name        #获取不存在的value,为nil
    (nil)
    127.0.0.1:6379> set num 10    #string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作,而对于整型/浮点型可进行自增、自减操作。
    OK    
    127.0.0.1:6379> get num
    "10"
    127.0.0.1:6379> incr num    #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器
    (integer) 11
    127.0.0.1:6379> get num  
    "11"
    
    127.0.0.1:6379> decr num      #递减1  
    (integer) 10
    127.0.0.1:6379> decr num    #递减1
    (integer) 9
    127.0.0.1:6379> get num
    "9"

        2、list类型

    • lpush         从列表左边插
    • rpush         从列表右边插
    • lrange          获取一定长度的元素  lrange key  start stop
    • ltrim               截取一定长度列表
    • lpop                 删除最左边一个元素
    • rpop                     删除最右边一个元素
    • lpushx/rpushx                key存在则添加值,不存在不处理
    lpush duilie 'alex' 'peiqi' 'ritian'  #新建一个duilie,从左边放入三个元素
    
    llen duilie  #查看duilie长度
    
    lrange duilie 0 -1  #查看duilie所有元素
    
    rpush duilie 'tiger'   #从右边插入tiger
    
    lpushx duilie2  'dsb'  #key存在则添加 dsb元素,key不存在则不作处理
    
    ltrim duilie 0 2  #截取队列的值,从索引0取到2,删除其余的元素
    
    lpop #删除左边的第一个
    rpop #删除右边的第一个

      3、sets集合类型

        redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

        集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

    • sadd/srem   添加/删除 元素
    • sismember   判断是否为set的一个元素
    • smembers    返回集合所有的成员
    • sdiff             返回一个集合和其他集合的差异
    • sinter           返回几个集合的交集
    • sunion          返回几个集合的并集
    sadd zoo  wupeiqi yuanhao  #添加集合,有三个元素,不加引号就当做字符串处理
    
    smembers zoo  #查看集合zoo成员
    
    srem zoo  wupeiqi #删除zoo里面的alex
    
    sismember zoo wupeiqi  #返回改是否是zoo的成员信息,不存在返回0,存在返回1
    
    sadd zoo wupeiqi   #再把wupeiqi加入zoo
    
    smembers zoo  #查看zoo成员
    
    sadd zoo2 wupeiqi mjj #添加新集合zoo2
    
    sdiff zoo zoo2 #找出集合zoo中有的,而zoo2中没有的元素
    
    sdiff zoo2  zoo  #找出zoo2中有,而zoo没有的元素
    
    sinter zoo zoo1   #找出zoo和zoo1的交集,都有的元素
    
    sunion  zoo zoo1  #找出zoo和zoo1的并集,所有的不重复的元素

      4、哈希数据结构

        hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

        hashes存的是字符串和字符串值之间的映射,hash特别适合用于存储对象,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

        Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

    • hset 设置散列值
    • hget  获取散列值
    • hgetall获取在哈希表中指定 key 的所有字段和值
    • hmset  设置多对散列值
    • hmget  获取多对散列值
    • hsetnx   如果散列已经存在,则不设置(防止覆盖key)
    • hkeys     返回所有keys
    • hvals     返回所有values
    • hlen      返回散列包含域(field)的数量
    • hdel     删除散列指定的域(field)
    • hexists    判断是否存在
     

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

    语法 hset key field value

    hset news:1 title "first news title" #设置第一条新闻 news的id为1,添加数据title的值是"first news title"

    hset news:1 content "news content" #添加一个conntent内容

    hget news:1 title #获取news:1的标题

    hget news:1 content #获取news的内容

    hmget news:1 title content #获取多对news:1的 值

    hmset news:2 title "second news title" content "second Contents2" #设置第二条新闻news:2 多个field

    hmget news:2 title content #获取news:2的多个值

    hkeys news:1 #获取新闻news:1的所有key

    hvals news:1 #获取新闻news:1的所有值

    hlen news:1 #获取新闻news:1的长度

    hdel news:1 title #删除新闻news:1的title

    hlen news:1 #看下新闻news:1的长度

    hexists news:1 title #判断新闻1中是否有title,不存在返回0,存在返回1

    世间安得双全法,不负如来不负卿
  • 相关阅读:
    PHP乘法表
    通过闭包可以返回局部变量
    FZU2125_简单的等式
    FZU2122_又见LKity
    FZU2121_神庙逃亡
    UVA12585_Poker End Games
    UVA12583_Memory Overow
    HDU4647_Another Graph Game
    HDU4646_Laser Beam
    HDU4787_GRE Words Revenge
  • 原文地址:https://www.cnblogs.com/shangguanruoling/p/11826453.html
Copyright © 2011-2022 走看看