Redis基础

Redis非关系型数据库(NOSQL)

特点

  1. 数据间没有关联关系
  2. 数据存储在内存中

数据结构

字符串String、列表List、集合Set、有序集合SortedSet、哈希Hash、消息队列Stream、地理空间Geospatial、HyperLogLog、位图Bitmap、位域Bitfield。

redis中的键和值默认以二进制形式存储,默认以二进制形式显示,不支持中文,若要显示原始中文,quit后,使用 redis-cli --raw 重新登录

string

set key value 	//存储
get key			//获取
del key 		//删除
exists key 		//判断键是否存在,不存在返回0,存在返回1
keys * 			//查找所有键
flushall 		//删除所有键
ttl key  		//查看某个键还有多久过期,-1表示没有设置过期时间,-2表示已经过期
expire key 10	//设置某个键(已存在的键)的过期时间(10秒后过期)
setex key 10 value	//设置某个键的过期时间(10秒后过期)
setnx key value 	//只有当key不存在时才设置

列表

lpush key value //元素加入列表左边
rpush key value //元素加入列表右边
lrange key start end //范围获取 lrange key 0 -1: 代表列表第一个元素到最后一个元素
lpop key //删除列表左边元素并将元素返回
rpop key //删除列表右边元素并将元素返回
llen key //查看列表长度
ltrim 1 3 //只保留位置1和3的之间的元素

set

//set中元素不能重复
sadd key value //存储
smembers key    //获取集合中元素
sismember key  //判断某个元素是否在集合中
srem key value //删除集合中某个元素

有序集合SortedSet

//按照分数从小到大排序
zadd key sorce value //zadd fruit 1 apple 3 banana 2 peach
zrange key start end //获取元素
zrange key start end withscorse //获取元素和分数
zscore key value  //获取某个成员的分数
zrank key value	  //获取某个成员的排名
zrevrank key value //获取某个成员的排名(从大到小)
zren key value	  //删除

hash

hset key field value //hset person name xiaoming
hget key field 		 //获取键对应的值
hgetall key			 //获取hash中所有键值对
hdel key field		 //删除某个键值对
hexists	key field	 //判断某个键值对是否存在,1存在,0不存在

发布订阅模式

// 订阅一个频道
subscribe name
// 向某一个频道发布消息
publish name msg

缺点:消息无法持久化、无法记录历史消息

消息队列Stream

xadd name id msg1 msg2 //xadd geekhour * course redis;向Stream中发送消息(id填*代表自动生成消息id)
xlen name //查看Stream消息数量
//从位置0开始读取Stream中的消息,消费两条,如果没有消息阻塞1秒
xread count 2 block 1000 streams name 0
xrange name - + //查看Stream中消息详细内容
xdel name id    //删除Stream中指定id的消息
xtrim name maxlen 0  //删除Stream中所有的消息
xgroup create streamname groupname id //创建消费者组
xgroup createconsumer streamname groupname name //向消费组中添加消费者,name是消费者的名字
xinfo groups name //查看消费者组的信息
xreadgroup group groupname name count 2 block 3000 streams streamname > //读取消息

事务

事务:在一次请求中执行多个命令

redis中事务不具有原子性,即使其中某个语句执行出错,不影响其他语句的执行。在发送EXEC命令前,所有的命令都会被放入一个队列中缓存起来。在事务执行过程中,其他客户端提交的命令请求不会被插入到事务的执行命令序列中。

MULTI //开启事务
...	  //执行命令(加入到队列中)
EXEC  //执行事务

持久化

  1. RDB:(默认方式不需要配置)在一定间隔时间中,检测key的变化情况,然后持久化数据,适合做备份
  2. AOF:日志记录方式,可以记录每一条命令的操作(记录在追加文件AOF中),当redis重启时,会通过重新执行AOF文件中的命令来在内存中重建整个数据库内容。

主从复制

将一台redis服务器的数据复制到其他redis服务器,数据复制是单向的,只能从主节点到从节点(一个主节点有多个从节点,一个从节点只能有一个主节点)主节点负责写操作,从节点负责读操作,主节点将自己的数据变化通过异步的方式发送给从节点,从节点更新自己的数据。

哨兵模式

以一个独立的进程运行在redis集群中,监控集群中各个节点是否运行正常。

功能:

  1. 监控:通过不断发送命令检测节点是否正常。
  2. 通知:当发现某个节点出现问题,会通过发布订阅模式来通知其他节点。
  3. 自动故障转移:当主节点不能正常工作时,哨兵会将一个从节点升级为新的主节点,再将其他从节点指向新的主节点。

由于哨兵也会有单节点故障问题,所以一般使用3个哨兵来保证高可用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值