• Redis的一些概念、安装和操作指令


    redis简介

    部分基本概念

    Redis:Remote Dictionary Server(远程字典服务器)

    Redis的特点:

    1. 使用c语言开发
    2. 短小精悍,整个Redis一共只有5w行代码,核心代码只有2w行,性能强劲
    3. 基于内存
    4. 单线程(一次只能执行一条命令),多路IO复用(读写速度快)
    5. NoSQL,没有模式,所有数据都是K-V存储,K—> String, V---> 8中类型,常用的有5大类型

    安装

    1. 上传

    2. 解压缩

    3. 添加gcc环境(C语言编写)

      • 法一:yum install -y gcc-c++
      • 插入光盘,依次执行
        • rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
        • rpm -ivh cpp-4.4.7-17.el6.x86_64.rpm
        • rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
        • rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
        • rpm -ivh gcc-4.4.7-17.el6.x86_64.rpm
      • 检查是否成功
        • rpm –qa | grep gcc
    4. 编译,执行make命令

      1. 在没有安装gcc环境下,如果执行了make,不会成功!安装环境后,第二次make有可能报错:

        Jemalloc/jemalloc.h:没有那个文件

      2. 解决: 运行
        make distclean之后再make

    5. 执行make insatll 【PREIX=路径】

      这步会产生一个文件,后面的可选就是选择文件产生后的路径,默认好像是在/usr/local

    6. 将产生的bin目录加入到环境变量中

    7. 【后续的是避免占用客户端,使其在后台运行】

    8. 修改redis.conf文件的bind(改成自己需要的,具体可以看文件中的示例)和daemonize(no改yes),保存退出。建议使用服务器的把端口号也改一下,不然会被黑掉

    9. 启动后查看服务netstat –anp|grep 6379
      启动指令redis-server redis.conf
      配置文件看自己的

    客户端登录

    命令 说明 举例 备注
    redis-cli 启动客户端 redis-cli –p 端口号 连接指定的端口号 直接执行的话,默认端口号就是6379;
    ping 测试联通 回复pong代表联通
    exit 退出客户端
    redis-cli shutdown 停止服务器 redis-cli -h 127.0.0.1 -p 6379 shutdown 停止指定ip指定端口号的服务器 redis是通过客户端发送停止服务器的命令

    redis操作

    数据库操作

    命令 说明 举例 备注
    select 切换数据库 select 1:切换到1号库 开启redis服务后,一共有16(0-15)个库,默认在0号库
    flushdb 清空当前库
    dbsize 查看数据库数据个数
    flushall 通杀全部库

    key操作

    表达式 描述
    KEYS pattern 查询符合指定表达式的所有key,支持*,?等
    TYPE key 查看key对应值的类型
    EXISTS key 指定的key是否存在,0代表不存在,dr
    DEL key 删除指定key
    RANDOMKEY 在现有的KEY中随机返回一个
    EXPIRE key seconds 为键值设置过期时间,单位是秒,过期后key会被redis移除
    TTL key 查看key还有多少秒过期,-1表示永不过期,-2表示已过期
    RENAME key newkey 重命名一个key,NEWKEY不管是否是已经存在的都会执行,如果NEWKEY已经存在则会被覆盖
    RENAMENX key newkey 只有在NEWKEY不存在时能够执行成功,否则失败

    value操作

    **Redis中的数据以键值对(key-value)为基本存储方式,其中key都是字符串,这里探讨数据类型都是探讨value的类型。**

    key value value描述
    string 字符串
    list 可以重复的集合
    set 不可以重复的集合
    hash 类似于Map<String,String>
    zset(sorted set) 带分数的set

    string操作

    指令 描述
    SET key value 添加键值对
    GET key 查询指定key的值
    APPEND key value 将给定的value追加到原值的末尾
    STRLEN key 获取值的长度
    SETNX key value 只有在 key 不存在时设置 key 的值
    INCR key 指定key的值自增1,只对数字有效
    DECR key 指定key的值自减1,只对数字有效
    INCRBY key num 自增num
    DECRBY key num 自减num
    MSET key1 value1 key2 value2… 同时设置多个key-value对
    MGET key1 key2 同时获取一个或多个value
    MSETNX key1 value1 key2 value2 当key不存在时,设置多个key-value对
    GETRANGE key起始索引 结束索引 获取指定范围的值,都是闭区间
    SETRANGE key起始索引 value 从起始位置开始覆写指定的值
    GETSET key value 以新换旧,同时获取旧值
    SETEX key 过期时间 value 设置键值的同时,设置过期时间,单位秒

    特点

    1. 一个字符串最大容量为512M

    list操作

    指令 操作
    LPUSH/RPUSH key value1 value2… 从左边/右边压入一个或多个值 头尾效率高,中间效率低
    LPOP/RPOP key 从左边/右边弹出一个值 值在键在,值光键亡 弹出=返回+删除
    LRANGE key start stop 查看指定区间的元素 正着数:0,1,2,3,... 倒着数:-1,-2,-3,...
    LINDEX key index 按照索引下标获取元素(从左到右)
    LLEN key 获取列表长度
    LINSERT key BEFORE|AFTER value newvalue 在指定value的前后插入newvalue
    LREM key n value 从左边删除n个value
    LSET key index value 把指定索引位置的元素替换为另一个值
    LTRIM key start stop 仅保留指定区间的数据
    RPOPLPUSH list1 list2 从list1右边弹出一个值,左侧压入到list2

    特点

    1. 双向链表,可以从两端进行数据的插入(仅在redis中)
    2. 遍历时,从左往右进行遍历取值
    3. 弹栈和压栈时可以从两端
    4. 操作中间节点时性能较差

    set操作

    指令 描述
    SADD key member [member ...] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
    SMEMBERS key 取出该集合的所有值(不会删除set中的元素)
    SISMEMBER key value 判断集合是否为含有该值,有返回1,没有返回0
    SCARD key 返回集合中元素的数量
    SREM key member [member ...] 从集合中删除元素
    SPOP key [count] 从集合中随机弹出count个数量的元素,count不指定就弹出1个
    SRANDMEMBER key [count] 从集合中随机返回count个数量的元素,count不指定就返回1个
    SINTER key [key ...] 将指定的集合进行“交集”操作
    SINTERSTORE dest key [key ...] 取交集,另存为一个set
    SUNION key [key ...] 将指定的集合执行“并集”操作
    SUNIONSTORE dest key [key ...] 取并集,另存为set
    SDIFF key [key ...] 将指定的集合执行“差集”操作…
    SDIFFSTORE dest key [key ...] 取差集,另存为set

    特点

    1. 无序,不可重复

    hash操作

    指令 描述
    HSET key field value 为key中的field赋值value
    HMSET key field value [field value ...] 为指定key批量设置field-value
    HSETNX key field value 当指定key的field不存在时,设置其value
    HGETALL key 获取指定key的所有信息(field和value)
    HKEYS key 获取指定key的所有field
    HVALS key 获取指定key的所有value
    HLEN key 指定key的field个数
    HGET key field 从key中根据field取出value
    HMGET key field [field ...] 为指定key获取多个filed的值
    HEXISTS key field 指定key是否有field
    HINCRBY key field increment 为指定key的field加上增量increment

    特点

    1. 类似json格式,一级目录下还可以跟一个目录,或者说map结构中(key,(key1,value1),(key2,value2)…)

    zset操作

    指令 描述
    ZADD key [score member ...] 添加
    ZSCORE key member 返回指定值的分数
    ZRANGE key start stop [WITHSCORES] 返回指定区间的值,可选择是否一起返回scores
    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 在分数的指定区间内返回数据,从小到大排列,最大最小值都是分数,即score
    ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 在分数的指定区间内返回数据,从大到小排列, 最大最小值都是分数,即score
    ZCARD key 返回集合中所有的元素的数量
    ZCOUNT key min max 统计分数区间内的元素个数
    ZREM key member 删除该集合下,指定值的元素
    ZRANK key member 返回该值在集合中的排名,从0开始
    ZINCRBY key increment member 为元素的score加上增量,increment是需要增加的数据大小(通俗点讲就是加多少)

    特点

    1. 有序,不重复,和set有点不同
    2. 其有序的原因是,其在存储时多存储了一个score信息,该信息可以重复,但其他信息不可重复。有序也是按照score进行排序
    作者:Ya
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    并发与高并发(七)-线程安全性-原子性-atomic
    并发与高并发(六)-并发模拟代码
    springboot跨域请求接口示例
    关于Java编码规范
    并发与高并发(五)-并发模拟的三个工具
    springboot整合redis简单示例
    关于码云如何检出项目
    关于自动化打包部署Jenkins的使用和配置
    针对Oracle的一系列操作
    关于Linux下Oracle安装后启动的问题
  • 原文地址:https://www.cnblogs.com/1463490Ya/p/15382622.html
Copyright © 2020-2023  润新知