redis-部署与命令使用
redis的官方网站: redis.io
redis的官方文档参考网站: redisdoc..com 经过翻译的
redis的介绍:
redis是nosql的一种, 非关系型数据库, 数据以键值对的形式,存放在内存中。
redis 存储的数据类型包括: 字符串,列表,hash(字典) ,集合, 有序集合 等 但是存储的key都是字符串形式的
特点:
1 由于存储在内存中所以一速度快
2 数据持久化存储
3 可以对数据设定过期时间
4 支持事务
应用场景;
1 用于做数据缓存,提高访问性能
2 用于会话缓存, 保存web会话信息
3 用于作为消息队列,有订阅,发布功能
redis 部署
redis的部署有2种方式:一种通过yum , 包存放在epel仓库, 二种是通过手动部署
一,通过yum 方式:
1 首先安装epel包
装好后查看自带的redis包 的信息 这个包的版本较老
# yum info redis
2 进行redis 安装
# yum install redis -y
查看安装后生产的文件
4 启动服务
# systemctl start redis
5 redis 默认监听端口6379
redis tar包部署
1 下载tar包
2 进行解压
# tar -xvf redis-3.2.9.tar.gz
3 进行编译安装 在解压的redis 目录下
#make
# make install
4 报错信息
1 /bin/sh: cc: 未找到命令 - 安装gcc yum -y install gcc
2 zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录 - 解决 make MALLOC=libc
redis 命令操作
通过redis 自带的命令工具链接到redis
命令帮助: > help
@generic 公共命令
> help @generic 查看帮助
> del age 删除key , 可以同时删除多个
> exists age 判断key是否存在
> keys * 查看所有的键 , 这个命令在生产环境少用
> type age 查看类型 (string ,hash ,list , set ,zset )
> dbsize 查看db大小, 一般查看有多少个key
> expire key seconds 设定多少秒过期时间
> ttl key 查看key的过期时间 当查看key 返回值-2 表示key 被删除了 , 当key存在 则返回-1并没有过期时间, 当查看值大于0表是有过期时间
> persist key 去掉key的过期时间
> incr key 对key自动加1 , 如果这个key不存在,这创建key并设值为1
>decr key 对key 自动减1 , 如果key不存在,这key值为-1
> incrby key k 对key 自动增加k值 , 如果key不存在, 则创建key值为k
> decrby key k 对key自动减K值 , 如果key不存在,则key 值为-k
>incrbyfloat key k 对key 自动增加一个k值 k值为浮点数
> getrange key start end 查看key 在指定索引范围内的值
> setrange key index 值 , 设定指定索引位置的值
@string 字符串命令
> set xiao 12 设定一个数据
> setnx key 值 当key 不存在时候才设置
> set key 值 xx 当key 存在才 设置
> set name cui ex 10 设定这条数据过期时间
> SETNX name xiao 当这个key不存在时创建
> get xiao 查看值
> mget key1 key2 key3 同时获取多个key
> mset key1 值 key2 值 同时设置多个key
> append key 值 在key的原有值后面进行追加
>strlen key 查看key的值长度
> getset key 值 给key重新设定一个值并会返回老的值
@ list 列表命令 支持, 列表索引, 列表切片, 插入, 弹出,修改元素
> help @list 查看帮助
> rpush key 值1 值2 值3 向列表的右断依次插入值1 值2 值3
> lpush key 值1 值2 值3d 向列表的左端依次插入值1 值2 值3
> linsert key before|after 原值 新值 在列表的原值前或者后面插入新值
> lpop key 从左边 弹出一个值
> rpop key 从右边弹出一个值
> lrem key count 值 : 因为列表中的值是可以重复的, 这表示删除列表中count个该值 ,
当count 大于0 则从左向右删除 , count 小于0 则从右向左删除 , count等于0 则删除队列中所有的该值
>ltrim key start end : 按照索引start 和end 范围外的值删除, 这个命令用于批量删除
> lrange key start end : 查看指定索引范围的值 正值是从左到右 , 负值是从右到左 0 -1 就表示所有值
> lindex key 0 按照索引取值
> llen key 返回列表的长度
> lset key index 值 按照指定索引设定一个新的值
@hash : 关联数组 ,他的索引是按key 来作为索引的 类似字典
> hset key field 值 : 创建key的哈希值,属性为field
> hget key field : 查看key的field 属性值
> hdel key field : 删除key的field 属性值
> hgetall key : 查看key下所有值 一般上一个是field 下一个是值
> hexists key field :判断key的field 值是否存在
> hlen key : 返回key中field的个数
> hmset key field1 值 field2 值 field3 值 同时创建key 的多个field值
> hmget key field1 field2 查看key下的多个field值
> hkeys key 返回key下所有的field
> hvals key 返回所有的field的值
>hsetnx key field 值 : 当key下的field不存在时候设置
>hincrby key field number : 是的key下field的值增加number数
> hincrbyfloat key field number : key下的field值增加number , number为浮点数
@set 集合,集合之间可以进行差集, 并集, 交集 计算 ,集合是无序的,不重复的
> sadd key 值1 值2 向集合添加两个值
>srem key 值1 将集合中的值1 删除
> scard key : 计算key的值个数
> sismember key 值 : 判断集合中值是否存在
> srandmember key 2 : 从集合中随机取2个值
> spop key : 从集合中随机弹出一个值
> smembers key : 获取集合中有所的值
> sinter key1 key2 求两个集合的交集
> sunion key1 key2 求两个集合的并集
> sdiff key1 key2 求两个集合的差集
@sorted_set : 有序集合,没有重复元素 集合的值也是右两部分组成的 score + value
> zadd key score 值 : 向有序集合key 添加值 , score是可以重复的 , 值是不可以重复的
> zrem key 值 : 删除指定值,可以同时删除多个
> zscore key 值 : 查看指定值的score是多少
> zincrby key 3 值 : 向集合的指定值 对应的score自增3
> zcard key : 返回key集合中的元素个数
>zrank key 值 : 获取集合值的一个排名
> zrange key 0 -1 withscores : 获取所有(指定范围的索引)元素的一个排名并且打印出score
> zrangebyscore key minscore maxscore withscores : 获取指定score范围内的根据元素 并打印出score
> zcount key minscore maxscore : 获取指定score范围内的元素的个数统计
> zremrangebyrank key start end : 对指定排名范围内的元素删除
> zremrangebyscore key minscore maxscore : 按照score 排名的指定范围内元素删除
消息的订阅,发布
> PUBLISH news hello 发布消息hello 生产者生产消息
>SUBSCRIBE news 订阅 消费者取订阅消息 当没有消息会在阻塞