Redis学习(一)redis的介绍-使用场景-安装-基本命令

1、Redis是什么

缓存的请求逻辑

在这里插入图片描述

什么是Redis

Redis是一个no sql的数据库

Redis是一个基于键值对的存储系统 key value Map结构

no sql 的数据库(非关系型的数据库)

非关系型数据库-----------------关系型的数据库

关系:表与表之间的关系 对象和表之间的映射关系

非关系型数据库:不存在表与表之间的关系 也不存在 对象和表之间的关系

在Redis中简单的说 啥都没有 所有数据 都是基于键值对来进行存储的

2、redis的工作场景

  1. 做数据缓存(缓存)
  2. 购物车数据
  3. 评论的存储
  4. 抽奖
  5. 商城中评分
  6. 最热的商品
  7. 秒杀
  8. 好友关注
  9. 实现session共享
  10. 分布式锁

3、Redis的特点

  1. Redis是基于内存的,速度快
  2. 如果出现了断电 那么内存数据会发生丢失
  3. Redis的使用场景 一定是对数据的要求不是严格的
  4. Redis的所有存储结构中都是以Key—Value的形式进行存储的
  5. 提供了五种不同的数据类型来满足不同的开发场景
    1. String Hash List Set Sorted Set
  6. Redis中还提供了3中持久化模式来保证数据的持久化(将内存的数据放到硬盘)
  7. Redis还提供多种淘汰策略来满足缓存的数据一定是最新的
  8. Redis中还提供了大量的命令集、来完成我们开发中的操作
  9. Redis从提供了三种架构(主从、哨兵、集群)

4、Redis五种数据结构

在这里插入图片描述

5、Redis的安装

不想去官网下载的,可以使用这个,版本:redis-5.0.7
链接:https://pan.baidu.com/s/1_htvybjGOUuZRiMY61FyZQ
提取码:slkx
这两个都是一样的
https://download.csdn.net/download/fan521dan/12232402

1、将redis的安装文件复制到 /usr/local目录下去
cp redis-5.0.7.tar.gz /usr/local/

2、下载Redis运行的时候所需要的运行环境
yum install gcc

3、解压上面的Redis文件
tar -zxvf redis-5.0.7.tar.gz

4、进入Redis的根目录进行编译
cd redis-5.0.7
make

5、进入到src目录下进行安装
cd /usr/local/redis-5.0.7/src
make install

6、创建运行的命令的目录和配置文件的目录
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc

7、移动配置文件到 /usr/local/redis/etc目录下
cp redis.conf /usr/local/redis/etc/

8、将运行命令放到 /usr/local/redis/bin目录下去
cp redis-server /usr/local/redis/bin/
cp redis-cli /usr/local/redis/bin/
    
redis-server :Redis的服务端的启动程序
redis-cli:Redis的客户端的启动程序

客户端启动之后 就可以对数据库的数据进行操作
cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf

netstat -apn | grep 6379   :查看6379的端口使用情况

6、Redis的基本命令

在Redis难道有多个数据库?

在redis中默认是16个数据库、怎么在这些数据库之间 进行切换呢?

这个数据库的下标 0----15

默认选中的是 第0号数据库 默认数据存储也是存储到第0号数据库的

1、key
    keys * :查看当前数据库中存在的键
    select 数据库的下标   选中某一个数据库
    del key :删除某一条数据
    exists key :判定某一个key是否存在
        token需要使用
        所有缓存的地方都需要使用这个命令
    expire key  过期时间 :这个命令可以用在前后分离项目中token设置的过期时间   过期之后 key会被删除
    ttl key :查看这个key剩余的时间
              场景:这个主要就是key如果是需要续期的话 就可以使用这个命令
              返回-2 这个key不存在
              返回-1 表示没有过期时间永远都有效
    move key 数据库索引  :将一个key--value移动到另外一个数据库中去 
              场景:一般情况下做数据库的迁移(基本用的很少)
    randomkey 随机返回一个key 
2、String
2.1、赋值取值
set key  value   :在数据库中设置一个键值对的数据
get key          :获取某一个值

在这里插入图片描述

场景:存储对象的数据

set user:1:userName xiaobobo
set user:1:password 123
set user:1:count 300
get user:1:userName  只取用户名 
2.2、同时设置多个值
mset k v k1 v1  :同时设置多个键值对
mget k1 k2  :通古斯获取多个键值对的数据

场景:存储一个对象的数据

mset user:1:userName xiaobobo user:1:password 123 user:1:count 100

mget user:1:userName user:1:password user:1:count
2.3、自增自减
incr key  ;自增
decr key  :自减
incrby key 步长  :一次性增加多少
decrby key 步长  :一次性减去多少

场景:评论量,转发量,点赞,在线人数

怎么使用?

set weibo-readcount-{文章id} 0

incr weibo-readcount-{文章id} 
2.4、setnx
setnx key value:表示的是如果这个key不存在的话  那么就设置这个键值对

场景:主要是用在分布式的锁上面
在这里插入图片描述

3、Hash
赋值语法: 
  HSET KEY  FIELD  VALUE    // 为指定的KEY,设定FILD/VALUE  
  HMSET  KEY  FIELD VALUE [FIELD1,VALUE1]…… // 同时将多个 field-value (域-值)对设置到哈希表 key 中。 
 

取值语法: 
  HGET KEY FIELD   // 获取存储在HASH中的值,根据FIELD得到VALUE
  HMGET key field[field1]      // 获取key所有给定字段的值 
  HGETALL key                  // 返回HASH表中所有的字段和值 
	
HKEYS key   // 获取所有哈希表中的字段
HLEN key    // 获取哈希表中字段的数量

删除语法: 
   HDEL KEY field1[field2]    // 删除一个或多个HASH表字段 

其它语法:
	HSETNX key field value 
	// 只有在字段 field 不存在时,设置哈希表字段的值

HINCRBY key field increment 
	// 为哈希表 key 中的指定字段的整数值加上增量 increment 。

HINCRBYFLOAT key field increment  
	// 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

HEXISTS key field  // 查看哈希表 key 中,指定的字段是否存在

4、List
赋值语法: 
LPUSH key value1 [value2]  // 将一个或多个值插入到列表头部(从左侧添加)
RPUSH key value1 [value2]  // 在列表中添加一个或多个值(从右侧添加)
LPUSHX key value   		  // 将一个值插入到已存在的列表头部。如果列表不在,操作无效
RPUSHX key value   		  // 一个值插入已存在的列表尾部(最右边)。如果列表不在,操作无效。

取值语法: 
LLEN key      		// 获取列表长度
LINDEX key index    // 通过索引获取列表中的元素
LRANGE key start stop  // 获取列表指定范围内的元素
/*
描述: 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
start:  页大小*(页数-1)  
stop : (页大小*页数)-1
*/
删除语法:
LPOP key  // 移出并获取列表的第一个元素(从左侧删除)
RPOP key  // 移除列表的最后一个元素,返回值为移除的元素(从右侧删除)

BLPOP key1 [key2 ] timeout 
	// 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	例: BLPOP list1 100
在以上实例中,操作会被阻塞,如果指定的列表 key list1 存在数据则会返回第一个元素,否则在等待100秒后会返回 nil 。

BRPOP key1 [key2 ] timeout 
	// 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

LTRIM key start stop   
    // 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

修改语法:
LSET key index value  // 通过索引设置列表元素的值
LINSERT key BEFORE|AFTER world value // 在列表的元素前或者后插入元素
		// 描述:将值 value 插入到列表 key 当中,位于值 world 之前或之后。

高级语法:
RPOPLPUSH source destination 
	// 移除列表的最后一个元素,并将该元素添加到另一个列表并返回	
示例描述:
RPOPLPUSH a1  a2   // a1的最后元素移到a2的左侧
RPOPLPUSH a1  a1   // 循环列表,将最后元素移到最左侧
BRPOPLPUSH source destination timeout 
	// 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
5、Set
赋值语法: 
  SADD key member1 [member2] // 向集合添加一个或多个成员 

取值语法: 
  SCARD key // 获取集合的成员数 
  SMEMBERS key  // 返回集合中的所有成员 
  SISMEMBER key member  // 判断 member 元素是否是集合 key 的成员(开发中:验证是否存在判断) 
  SRANDMEMBER key [count] // 返回集合中一个或多个随机数	   
  
删除语法:  
SREM key member1 [member2] // 移除集合中一个或多个成员
SPOP key [count]  // 移除并返回集合中的一个随机元素
SMOVE source destination member 
		// 将 member 元素从 source 集合移动到 destination 集合

差集语法: 
   SDIFF key1  [key2]   // 返回给定所有集合的差集(左侧) 
SDIFFSTORE destination key1 [key2]  // 返回给定所有集合的差集并存储在 destination 中

交集语法: 
   SINTER key1 [key2]  // 返回给定所有集合的交集(共有数据) 
SINTERSTORE destination key1 [key2]  // 返回给定所有集合的交集并存储在 destination 中
并集语法: 
   SUNION key1 [key2] // 返回所有给定集合的并集 
SUNIONSTORE destination key1 [key2]  // 所有给定集合的并集存储在 destination 集合中
6、Sorted Set
赋值语法: 
ZADD key score1 member1 [score2 member2] 
		// 向有序集合添加一个或多个成员,或者更新已存在成员的分数  

取值语法: 
     ZCARD key  // 获取有序集合的成员数
     ZCOUNT key min max // 计算在有序集合中指定区间分数的成员数
	 ZRANK key member   // 返回有序集合中指定成员的索引
	 ZRANGE key start stop [WITHSCORES] 
			// 通过索引区间返回有序集合成指定区间内的成员(低到高)
	ZREVRANGE key start stop [WITHSCORES] 
			// 返回有序集中指定区间内的成员,通过索引,分数从高到底

删除语法: 
     del key   // 移除集合 
	ZREM key member [member ...]   // 移除有序集合中的一个或多个成员
	ZREMRANGEBYRANK key start stop // 移除有序集合中给定的排名区间的所有成员(第一名是0)(低到高排序)
	ZREMRANGEBYSCORE key min max   // 移除有序集合中给定的分数区间的所有成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值