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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/1463490Ya/p/15382622.html