• redis


    一、redis简介

    1.redes介绍:

    Redis:Remote Dictionary Server( 远程字典服务器 ) 是完全开源免费的,用 C 语言编写的,遵守BSD 协议,是一个高性能的 (key/value) 分布式内存数据库,基于内存运行并支持持久化的NoSQL 数据库,是当前最热门的 NoSql 数据库之一 , 也被人们称为数据结构服务器

    2、redis作用:

    1. 内存存储和持久化:Redis 支持异步将内存中的数据写到硬盘上,同时不影响继续服务
    2. 取最新 N 个数据的操作,如:可以将最新的 10 条评论的 ID 放在 Redis 的 List 集合里面
    3. 模拟类似于 HttpSession 这种需要设定过期时间的功能
    4. 发布. 订阅消息系统
    5. 定时器. 计数器

    3、特点:

    1. Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
    2. Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset, hash 等数据结构的存储
    3. Redis 支持数据的备份,即 master-slave 模式的数据备份
    4. 如何获取 redis:http://redis.io/   | http://www.redis.cn/

    二、redis安装

    1.下载:wget http://download.redis.io/releases/redis-5.0.5.tar.gz

    2.移动:mv redis-5.0.5.tar.gz /opt/  这是移动到opt下面的文件夹。

    3.解压:先进入到opt文件夹下的install。tar -zxvf redis-5.0.5.tar.gz -C /install 这是解压到install目录内,install是自己创建的。

    4.安装gcc:yum -y install gcc-c++ 。因为是c语言编写的所以需要c语言解释器。

    5.编译:进入到redis文件夹下 然后执行make 进行编译 。

    6.安装:make install PREFIX=usr/local/redis  就是把它安装到usr下面的local目录下的redis内,

    目前redis 没有 会自动创建一个, 安装就是把redis的可执行命令放这里面。

    7:配置一下环境变量,在任何地方都可以使用。

    vim /etc/profile  :进入配置页面配置redis的环境变量。

     1 ####################################JAVA_HOME########
    JAVA_HOME=/opt/install/jdk1.8.0_201 2 PATH=$PATH:$JAVA_HOME/bin 3 4 5 6 ###################################CATALINA_HOME###### 7 CATALINA_HOME=/opt/install/apache-tomcat-7.0.65 8 PATH=$PATH:$CATALINA_HOME/bin 9 10 11 #########################REDIS_HOME################## 12 REDIS_HOME=user/local/redis/ 13 PATH=$PATH:$REDIS_HOME/bin
    注意:这三个环境变量分别是jdk,tomcat,redis的环境变量

    8:source/etc/profile 刷新生效

     命令解析:

    redis-server:服务端

    redis-cli:客户端

    redis-check-aof:对aof文件进行修复的

    redis-check-dump:对dump文件进行修复的

    redis-benchmark:对redis进行测试的

    redis-sentinel ->redis-server:相当于一个快捷方式

    三、redis作为后端服务程序运行

    就是redis启动之后一直占用前端窗口没法输出命令,想办法让redis作为后台服务启动。

    1.将opt/install/redis目录下的redis.conf的daemonize 后面的no 改为yes。,

      步骤:cd /opt/install/redis-5.0.7/  先进入这个目录里面。
      然后 ll 查看 发现redis.conf文件  然后输入:vi redis.conf 进去编辑 

      进去     /daemonize 是搜索这个内容  按n 进行下一个搜索,找到之后改了就行。

     2.同时将redis.conf拷贝到usr/local/redis/bin目录下。

           cp redis.conf /usr/local/redis/bin/  拷贝到这里面一份。
    3. cd /usr/local/redis/bin  进入redis的bin目录 然后就是启动

    ./redis-server redis.conf     在这个目录下 启动服务器 后面跟着redis.conf 就是让他作为后端服务器运行。

    4,然后可以通过下面这条命令查看rdis 是否启动:

    ps -ef | grep redis     或者这种通过端口号查看  netstat -an | grep 637

    出现这样就证明服务器正在启动!!

    然后直接执行当前目录下的客户端让客户端启动

    ./redis-cli

    然后输入ping 测试

    至此结束。这样就和windows一样 在后台启动 就不会占用一个窗口了

    四、redis客户端

    4.1.命令行

    ./redis-cli   就是在启动服务端的时候 然后启动客户端 。

    exit ,quit  是对出客户端  

    shutdowm:是在客户端输出命令关闭服务端。

    4.2.图形化界面 

    找到erdis-desktop-manager 直接安装就行 。

    进去后连接redis服务器:然后名称随便起,地址就是服务器在的虚拟机的ip:192.168.248.99

    如果连接不上 可能版本问题

    然后按照下面的修改下

    修改redis.conf文件  

     protected-mode后的 yes 改成no 

    Bind 127.0.0.1 给注释掉

    然后重启redis.conf配置文件。 让他重新加载这个配置文件。

     ./redis-server redis.conf 

    五、string,hash,key,list,set,zset

    5.1String:

    string可以存储任意类型的数据

    set key value:给指定的key设置对应的value

    SET key 名字 value 值 : 设置单一键值对 (key 值相同会覆盖原来的值 , 类似于 map 集合

     get key: 根据给定的key获取指定的值

    APPEND key 名字 新值:在原有的值的基础上添加新的值
    STRLEN key 名字 : 获取字符串的长度(key 值必须是数字 )

     mset key1 value1 key2 value2 key3 value3:同时设置多个键值对

     mget key1 key2 key3:同时根据多个键获取键对应的值

    getset key1 value2:表示先获取key1对应的值value1,然后把key1的值设置为value2

     

    要求:value值是数字类型的字符串。

    incr key :表示将该key对应的value值增加1

    incrby key increment:表示将给key对应的value值增加指定的幅度

     

    decr key:表示将该key对应的value值减去1

    decrby key decrement:表示将给key对应的value值减去指定的幅度

    append key2 aaa:key2对应的value值后面拼接字符串

    数值增加:

       用途:1.网站访问量统计

             2.生成表的id

    5.2:key的使用:

    keys * :指令 查看当前这个库中所有的 key 值
    exists key 名字 : 判断某个 key 值是否存在 0 表示不存在 1 表示存在
    move key 名字 数据库的索引下标 : 将某个值移除到指定的库中
    expire key 名字 秒 :设定指定的 key 的存活时间

    PERSIST key: 清除存活时间,让该key永不过期

    PEXPIRE key milliseconds生存时间设置单位为:毫秒

    rename key1 new_name:可以给某个key重命名
    ttl key 名字 : 查看当前的 key 还有多少存活时间 -1 表示永不过期,-2 表示已经过期
    type key 名字 : 查看当前 key 的类型(key String,Object)
    select 下标 : Select 下标可以切换不同的数据库:

    keys * :查看当前库中所有的key

    flushdb:清空当前库中的所有键值对

    flushall:清空所有库中的键值对

    del key:删除指定的key-value键值对

    dbsize:查看当前库中key的个数

    INFO:查看当前redis服务器的信息
    补充 : Redis 默认有 16 个库,我们可以通过修改 redis 配置文件 redis.conf 来改变库的量

    5.3:Hash类型

    Hash类型适合存储对象,格式如下

    命令如下:

    hset  key field value:给某个key设置指定的field-value

    Hmset key field1 value1 field2 value2 field3 value3:同时给key设置多个field-value

    hget  key field:根据field查看指定keyfield

    hmget key field1 field2..:同时查看key对应的多个field

    HSETNX key field value:key对应的某个field域不存在的时候,给该field赋值值!

    hincrby zhangsan age -4:给指定的key的某个field增加对应的数值

    hkeys key: 查看指定的key所有的field

    hvals key:查看指定key的所有fieldvalue

    Hgetall key:查看指定key的所有field-value

    hdel key field:删除某个key对应的field-value

    del key:删除某个key对应的所有field-value

    HEXISTS key field:查看key的某个field是否存在,存在返回1,不存返回0

    hlen key:查看某个key有多少个field-value

    5.4: List类型【有序,可重复

    lpush key value1 value2 value3:从左边依次往list集合中存放数据

    rpush key  value1 value2 value3:从右边依次往list集合中存放数据

    lpop key:默认将该key对应列表数据中最左边的那个元素弹出。

    rpop key:默认将该key对应列表数据中最右边的那个元素弹出

    llen key:查看某个key对应的列表中元素的个数

    lrange key start stop:查看list集合中有哪些数据,指定查看起始位置和终止位置

    5.5:Set类型:【无序,不可重复】

     

    SET类型适合存储Java中的set集合数据

     

    命令:

     

    sadd key value1 value2 value3 value2: 往集合中添加了3个元素

     

    srem key value2:删除key对应的集合中的value2元素

     

    sismember key value2:查看指定的集合中是否含有某个元素,有返回1,没有返回0

     

    smembers key:查看集合中所有的元素

     

    集合可以和高中学过集合类似,可以参与交集、并集、差集的运算:

     

    交集:sinter set01 set02:获取两个指定集合的交集

     

    并集:sunion set01 set02:求两个集合的并集

     

    差集:sdiff set01 set02:表示set01集合有而set02集合没有的元素

     

    scard key:获取指定key的对应的集合元素的数量:

     

    SRANDMEMBER  key:随机读取指定集合中的一个元素。

     

    5.6: zset[Sorted set]

     

     

    有序集合: 数据本身不可重复,但是数据都有一个分数,分数是可以重复

    zadd key  98 value1 98 value2  90 value3:给指定的集合中添加元素,并且每个元素前面都有分数

    zscore zset01 value2:获取集合中某个元素的分数

    zrem zset01 value1:删除某个key对应集合中的某个元素

    zrevrange zset02 0 1 withscores:查看指定集合中有哪些元素,按着元素分数逆序排列

    zrange zset01 0 -1 withscores】:查看指定集合中有哪些元素,如果看分数则带withscores参数

    可以实现游戏排名:

     

     

     

  • 相关阅读:
    Python学习2——使用字符串(完整版)
    Python补充4——替换与修改
    Python学习3——列表和元组
    数据结构链表——双向链表
    数据结构链表—— 循环链表
    数据结构链表——静态链表
    LeetCode 61——旋转链表(JAVA)
    LeetCode 2——两数相加(JAVA)
    LeetCode 328——奇偶链表(JAVA)
    HillCrest Sensor HAL
  • 原文地址:https://www.cnblogs.com/ych961107/p/11919857.html
Copyright © 2020-2023  润新知