• redis入门


    Redis

    • 简介
    • 安装
    • 基础使用
    • 配置&说明
    • 数据类型
    • redis命令
    • 订阅和发布
    • redis事务
    • redis脚本
    • Redis 连接

    • Redis服务器

    参考文章:

      https://blog.csdn.net/u011277123/article/details/78692603/ (redis使用场景)

             http://redisdoc.com/   (redis 文档)

            http://www.redis.net.cn

             http://try.redis.io/

              http://www.redis.net.cn/order/3669.html(命令)

    简介

    REmote DIctionary Server(Redis 远程字典服务) 是一个key-value存储系统。支持网络、遵守BSD协议,可基于内存亦可持久化的日志型、Key-Value数据库。

    BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,实现代码共享。

    value支持的数据类型:

    • String: 字符串
    • Hash: 散列
    • List: 列表
    • Set: 集合
    • Sorted Set: 有序集合

    Redis的特性:

      1. 读写速度非常的快,读的速度是110000次/s,写的速度是81000次/s。

            2.可存储在缓存区也可读写到磁盘中。

            3. 具有数据库的一致性(原子)特性。

            4. redis比较小仅5MB。

    Redis的使用场景:

       1. 短时间高并发IO操作。

               2. 海量级数据的操作。

               3.  数据结构复杂不适合用关系型数据库存储。

      大多用于:

        分布式架构的Session共享

                   配合关系型数据库做高速缓存

    安装

    下载地址:

        https://github.com/MSOpenTech/redis/releases(windows下安装)

                  http://bitsandpieces.it/redis-x86-32bit-builds-for-windows  (windows x86下载)

                   http://www.redis.cn/   (中国区官网)

                  http://redis.io/download (linux下安装)

    下载后解压即可。为方便使用最好绑定到环境变量中。

    http://www.runoob.com/redis/redis-install.html (查找linux下使用)

    linux下:

          >tar -zxf    ****

         >make  && make install

    如果出现安装失败缺少gcc则安装gcc,然后再安装应用

    》yum install -y gcc texinfo-tex flex zip libgcc.i386 glibc-devel.i386

     如果出现   zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

    参见:https://blog.csdn.net/bugall/article/details/45914867

       》make MALLOC=libc

         >cd src

         >./redis-server  ../redis.conf

    为了快速启用和使用redis可将其设置到bin中:

         >cp redis-server redis-cli /usr/bin/

         >cp ../redis.conf /etc/

         >redis-server /etc/redis.conf

         >redis-cli -h 192.168.50.128   -p 6379 --raw

       》redis-cli -h 127.0.0.1 -p 6379 shutdown    //停止

    基础使用

    redis在线测试地址:http://try.redis.io/

    通过简单的语句set 和 get 语句读取数据:

    >set  [key] [value]

    >get [key]      

    本地安装redis使用:

    在解压包中有两个文件 :

        redis-server.exe  (服务端:默认端口6379)

                  redis-cli.exe(客户端)

    首先点击redis-server.exe开启服务,不要关闭哦。

    redis-server ./redis.windows.conf

    然后点击redis-cli.exe打开客户端。

    最简单的数据输入输出就完成了。

    配置:

    redis的配置在redis.config 或者 redis.window.config 下。

    打开文件有关于此项配置的说明,就知道可输入的参数有哪些,配置的说明:

    不过要快速查找和设置还是用命令较快。

    >config get *       // 查看所有配置项
    >config get port // 查看端口号
    >config set loglevel warning //设置配置
    >config rewrite //使修改配置在下次启动有效,不然就仅仅本次

    某些配置不能在命令中进行设置,需要直接修改配置文件,因为这关系到Redis服务器本身。例如:port和 daemonize等。

    主要配置说明: 

    dbfilename : dump.rdb    //默认数据库文件名

     daemonize :no            //守护进程为no,即依托于终端执行,一旦终端关闭则服务就停止。设为yes 则相当于服务中的 nohup命令一样。需要找到pid通过kill来杀掉进程。(在linux下有效,windows不支持)

     pidfile  /var/run/redis.pid   // 当守护进程设置为yes时,pid会默认指向其路径。

    常用命令:

    >redis-cli -p 6380 ping  //测试是否联通

    >redis-cli -p 6380 -r 10 ping  //测试十次用于判定网络的稳定性

    >redis-cli -p 6380  set name "张三"    //可应对输入时乱码问题

    >select [index]                                //切换库分片

    数据类型

    Redis支持五种常用数据类型:

    string(字符串)

    hash(哈希)

    list(列表)

    set(集合)

    zset(sorted set:有序集合)

    geo(地理位置)  --暂不做介绍

    HyperLogLog(概率数据结构) --暂不做介绍

     

    数据类型的完整命令用法:

          参见:http://redisdoc.com/

    String:

    String 是redis最基本的类型,因为是二进制存储,所以可以存储任何编码格式字符或数据,也可存储图片或序列化对象。最大存储512MB。

    使用get和set的方式进行读取。

    结构:set key value

               get key

    127.0.0.1:6379> set userId 55112
    OK
    127.0.0.1:6379> get userId
    "55112"
    127.0.0.1:6379>

      》 setex name 10 "zhangsan"     //保留10秒

           》set name "zangs" NX               //如果没有则添加

    hash:

    Redis hash是一种键值对集合,适合于存储对象。

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

    结构: Hmset key field value [field value ...]

       Hget key field

    127.0.0.1:6379> HMset testHs test1 zhangsan test2 lisi test3 wangwu
    OK
    127.0.0.1:6379> HGet testHs test2
    "lisi"
    127.0.0.1:6379>

      List:

    Redis 列表是简单的字符串列表,按照顺序插入,仅可在最开始最后插入数据,不能在中间插入。最大支持 232 -1 笔数据。

    结构:lpush key value [value ...]

              lpop  key

    127.0.0.1:6379> lpush mylist zhangsan  lisi  wangmazi
    (integer) 3
    127.0.0.1:6379> lpush mylist zhaosi wangjun
    (integer) 5
    127.0.0.1:6379> lpop mylist
    "wangjun"
    127.0.0.1:6379> lrange mylist 0   10
    1) "zhaosi"
    2) "wangmazi"
    3) "lisi"
    4) "zhangsan"
    127.0.0.1:6379>

            set:

           Redis的Set是string类型的无序集合,最多可添加 232 - 1笔数据,但set是不允许重复的。因此如果已经存在的数据,不能被覆盖掉,会返回0,成功插入为1.

          结构:sadd key member [member ...]

    127.0.0.1:6379> sadd mySet 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> sadd mySet 67
    (integer) 1
    127.0.0.1:6379> sadd mySet 4 5
    (integer) 0
    127.0.0.1:6379> smembers mySet
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "67"
    127.0.0.1:6379>

              ZSet(sorted set):

               zSet 和 set 集合一样都不允许重复,但是zSet会给每个成员分配一个score,这个分数可以重复,最后通过score进行从小到大排序。

                结构:zadd key [NX|XX] [CH] [INCR] score member [score member ...]

    127.0.0.1:6379> zadd zSet 0 zhangsan 4 wangwu 2 lisi 0 zhangming
    (integer) 4
    127.0.0.1:6379> zadd zSet 1 zhonghua 2 zhonggong
    (integer) 2
    127.0.0.1:6379> zrange zSet 0 0
    1) "zhangming"
    127.0.0.1:6379> zrange zSet 0 6
    1) "zhangming"
    2) "zhangsan"
    3) "zhonghua"
    4) "lisi"
    5) "zhonggong"
    6) "wangwu"
    127.0.0.1:6379>

    redis命令

     客户端启动命令:    > redis-cli     //注意Redis要在环境变量中才可以

    检查服务端是否连接: >ping         // 结果会是pong

    远程访问Redis服务:

          首先确保本地有Redis的客户端。以本地演示为例:

         修改redis.windows-service.conf文件:

                1. 注释掉  bind 127.0.0.1,(注释用#)这样就可以通过外部访问       

    C:Userszhaoq>redis-cli -h 192.168.202.67 -p 6379
    192.168.202.67:6379>

                2. 给服务端添加密码 : 放开  # requirepass foobared。 修改foobared为自己的密码

    或者为: redis-cli -h [ip] -p [port] -a [pwd]

    C:Userszhaoq>redis-cli -h 192.168.202.67 -p 6380
    192.168.202.67:6380> get userName
    (error) NOAUTH Authentication required.
    192.168.202.67:6380> auth dennyzhao
    OK
    192.168.202.67:6380>

    keys:

    键命令用于管理和操作redis 的键。

    >keys *   //查看所有的key,可支持pattern

    >exists [key]  //查找key是否存在

    >dump [key]  //序列化key对象

    >del [key]     //删除key,不支持模糊删除

    具体命令参见:  http://redisdoc.com/key/index.html

    其它数据类型在此不再陈述。

    订阅和发布

    redis通过订阅和发布模式实现数据的缓存和获取,即数据推送。

    比如一个客户端作为主播(推送者)publish一个cctv1频道,有两个观众订阅(接收者)subscribe这个cctv1频道,这样主播发布的节目观众就可以实时看到。

    > publish cctv1          // 发布频道节目

    >subscribe cctv1       // 订阅频道节目

    >pubsub channels    // 查看自己的发布或订阅

    具体命令介绍参见 : http://redisdoc.com/pub_sub/index.html

    Redis事务

     redis事务不同于数据库的事务,数据库的事务可以设置多种策略,事务具有一致性,而redis的事务仅仅将redis命令放在一起,统一执行。

    步骤:开始事务(multi)-》命令入队-》执行事务(exec)

    redis的原子性指单条命令的行为具有一致性,但在事务中不具备原子性。单个命令在执行过程中的成功与失败,不会回滚上一命令的结果,也不会影响下一命令的执行。

    127.0.0.1:6380> multi
    OK
    127.0.0.1:6380> set username zhangsan
    QUEUED
    127.0.0.1:6380> get username
    QUEUED
    127.0.0.1:6380> keys *
    QUEUED
    127.0.0.1:6380> exec
    1) OK
    2) "zhangsan"
    3) 1) "username"
    127.0.0.1:6380>

    具体命令介绍参见 : http://redisdoc.com/transaction/index.html

    Redis脚本

    Redis 脚本使用 Lua 解释器来执行脚本。目前内嵌有Lua环境。

    *Lua由标准C编写而成,可在任何运行平台和环境中运行的内嵌入语音,Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,

    Lua的速度是最快的。这一切决定Lua是作为嵌入式脚本的最佳选择。

     redis使用EVAL来执行脚本。

    以下的脚本说明执行结构:

    eval  script numkeys [key ....] [argv......]

    key的占位符一定要用大写的KEYS[num],同样参数也是ARGV[num].num表示了数据的位置。

    127.0.0.1:6380> eval "return {KEYS[1],KEYS[2],KEYS[3],ARGV[1],ARGV[3],ARGV[2]}" 3 id code name 1111 wangwu  5267
    1) "id"
    2) "code"
    3) "name"
    4) "1111"
    5) "5267"
    6) "wangwu"

    在lua脚本中使用 redis.call()   或者  redis.pcall() 函数执行redis命令。

    127.0.0.1:6380> eval "redis.call('set', KEYS[1], ARGV[1])" 1 user wangmazi
    (nil)
    127.0.0.1:6380> get user
    "wangmazi"
    127.0.0.1:6380>

    注意:script脚本要用双引号,命令或内容非占位符要使用单引号。

    具体命令介绍参见 :http://redisdoc.com/script/eval.html

    Redis 连接

     在前面已经讲过,redis的基本连接

    >redis-cli -h [ip] -p [port] -a [pwd]

    在没有输入密码的情况下redis-cli -h [ip] -p [port]

    然后再补密码:

    >auth [pwd]

    >echo [message]  //回显输入内容

    >ping                     //测试连接是否畅通  回应 pong

    >quit                     //关闭当前连接

    Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。

    127.0.0.1:6380> set db_number 0
    OK
    127.0.0.1:6380> select 1
    OK
    127.0.0.1:6380[1]> set db_number 1
    OK
    127.0.0.1:6380[1]> select 1
    OK
    127.0.0.1:6380[1]> select 0
    OK
    127.0.0.1:6380> set db_number 2
    OK
    127.0.0.1:6380> set db_number 3
    OK
    127.0.0.1:6380> select 2
    OK
    127.0.0.1:6380[2]>

    具体命令介绍参见 :http://redisdoc.com/connection/index.html

    Redis服务器

     通过info命令可以查看到服务器的所有信息配置。

    >info

    临时存储的数据都在缓存中,要写入磁盘用

    >save

    >client list   //当前了解的用户数

    >time //当前时间

    具体命令介绍参见 :     http://redisdoc.com/server/index.html

           

                           

  • 相关阅读:
    手动封装 时间选择器(只显示时分)
    页面跳转问题-button 确定提交按钮
    java String类型转 java.sql.time类型
    Mysql 时间处理
    微信-商城商品的图文/商品链接分享(后台数据合成图片+二维码生成)
    np.nan 1.0 2.0 df.apply
    pandas math.isnan
    df.apply
    pandas多条件行数据筛选
    pandas cumsum/sum calc percentage
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/9270378.html
Copyright © 2020-2023  润新知