zoukankan      html  css  js  c++  java
  • redis 入门笔记

    redis简介:

      Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容;redis数据库是提供内存存储和持久化,由于是内存存储因此Redis可以在一秒内读写超过10万个键值,由于将数据存储在内存中,当程序退出后内存中的数据会丢失,因此redis提供了持久层,即可以将内存中的数据异步写入到硬盘中,同时又不影响提供服务。

    redis支持的键值类型:

    • 字符串类型:String
    • 散列类型:map
    • 列表类型:一个可从左或从右写入的队列,可以实现栈和队列 ,list
    • 集合类型:set
    • 有序集合类型:zset

    redis功能丰富:

    • 可以用作缓存、队列等系统中
    • 可以为每个键设置生存时间(TTL--Time To Live)
    • 可以基于redis支持“发布/订阅”的消息模式构建聊天室等系统(Redis贡献者之一Pieter Noordhuis 提供了一个用该模式开发的聊天室例子------https://gist.github.com/348262)

    redis安装:

      安装redis,大家可以百度,一大堆,一些大佬分享的特别不错

    redis启动:

    • 直接启动:直接运行redis-server即可,redis服务器默认会使用6379端口,启动命令 $redis-server (使用默认端口启动)  $redis-server --port 6380 (指定端口启动)  
    • 通过初始化脚本启动:在Linux系统中可以通过初始化脚本启动redis,使redis可以随着系统自动运行,在redis源代码目录的utils文件夹中有一个redis_init_script的初始化脚本文件,并在初始化脚本中追加两行代码(橙色的部分),内容如下
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # chkconfig: 2345 90 10
    # description: Redis is a persistent key-value database
    #
    as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
    • 然后我们需要配置redis的运行方式和持久化文件、日志文件的存储位置等,具体步骤如下:
    1. 配置初始化脚本:首先将初始化脚本复制到/etc/init.d目录中,文件名为 “redis_端口号”,然后修改脚本第6行的REDISPORT变量的值为同样的端口号。
    2. 创建需要的文件夹,即/etc/redis(存放redis配置文件)、/var/redis/端口号(存放redis的持久化文件)
    3. 修改配置文件:首先将配置文件模板(位于源代码目录的根目录中)复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),然后按照下表其中的部分参数进行编辑配置。
    daemonize yes 使redis以守护进程模式运行
    pidfile /var/run/redis_端口号.pid 设置redis的PID文件位置
    port 端口号 设置redis监听的端口号
    dir /var/redis/端口号 设置持久化文件存放位置

    到现在为止就可以使用 /etc/init.d/redis_端口号start来启动redis了,如果要跟随系统自启动还需要执行命令:$sudo update-rc.d redis_端口号 defaults (针对ubuntu操作系统),如果是centos操作系统,命令为chkconfig redis_端口号 no(这样就可以通过service redis_端口号 start 启动了)。

    redis基本命令:

    • 键值操作:
    1. 获取符合的键值:KEYS  pattern (pattern支持glob风格通配符格式如下表所示)
    匹配一个字符
    * 匹配多个字符
    [] 匹配括号间的任一字符,可以使用“-”表示一个范围,如a[b-d]可以匹配“ab”、“ac”,“ad”
    X 匹配字符X,用于转义符号
    1. 判断一个键是否存在:EXISTS key  (返回整型1为存在,返回0为不存在)
    2. 删除键:DEL key[key...]  (可以删除一个或多个键,返回值是删除键的个数)
    3. 获取键值的数据类型:TYPE key
    • 字符串类型存储:
    1. 赋值与取值:
      1. SET key value   
      2. GET key (当键不存在时,返回结果为空)
    2. 扩展:
      1. 生成递增数字作为key:INCR key
      2. 获取value字符串长度:select key  
    • 散列类型存储:
    1. 赋值与取值:
      1. HSET key field value
      2. HSET key field
      3. HMSET key field value [field value ...]
      4. HMGET key field [field ...]
      5. HGETTALL key
      6. HEXISTS
        1. 例子:HSET car price 500,HSET car name BMW
    2. 扩展:散列类型相当于存储的是一个对象,如下表所示:
    name price
    BMW 500
    B 1000
    • 列表类型(至多2^32-1个字符串)
    1. 向列表两端增加元素
      1. LPUSH key value [value ...]  (向左边增加)
      2. RPUSH key value [value ...]  (向右边增加)
    2. 从列表两端弹出元素
      1. LPOP key  (从左侧弹出一个元素)
      2. RPOP key (从右侧弹出一个元素)
    3. 获取列表中元素的个数
      1. LLEN key 
    4. 删除列表指定的值
      1. LREM key count value
    5. 这里补充一点,Java是通过序列化对象列表实现redis整存整取的
    • 集合类型(至多2^32-1个字符串)
    1. 增加/删除元素
      1. SADD key member[member ...]
      2. SREM key member[member ...]
    2. 获取集合中的所有元素
      1. SMEMBERS key
    3. 判断元素是否在集合中
      1. SISMEMBER key member
    • 有序集合类型
    1. 增加元素
      1. ZADD key score member [score member ...]
    2. 获得元素的分数
      1. ZSCORE key member
    3. 获得排名在某个范围的元素列表
      1. ZRANGE key start stop [WITHSCORES]
      2. ZREVRANGE key start stop [WITHSCORES]

            说明:当stop为-1时表示最后一个元素

      4.获取指定分数范围的元素

          1.ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]   例如 ZRANGEBYSCORE scoreboard 80 (100  ,表示获取分数在80,100之间的同学,“(”表示不包含100

     

     【未完待续】

  • 相关阅读:
    PHP magic_quotes_gpc的详细使用方法
    tinkphp URL重写,支持伪静态
    element-UI中table表格的@row-click事件和@selection-change耦合了
    element-ui dialog组件添加可拖拽位置 可拖拽宽高
    vue.js 父组件如何触发子组件中的方法
    Element UI Form 每行显示多列,即多个 el-form-item
    vue组件的3种书写形式
    Java 微信公众号迁移
    Java 微信公众号导出所有粉丝(openId)
    [四]并发类容器
  • 原文地址:https://www.cnblogs.com/bestxyl/p/9790078.html
Copyright © 2011-2022 走看看