Redis学习笔记

本文系统地介绍了Redis的基础知识,包括NoSQL概述、Redis数据类型及其操作命令,如字符串、哈希、列表、集合和有序集合,并探讨了Redis的持久化机制,如RDB和AOF。此外,还提到了Redis在缓存、任务队列等场景的应用。
摘要由CSDN通过智能技术生成

虽然在项目中已经使用了Redis,但是用得比较初级,估计也不太合规,完全无法发挥出Redis的巨大威力。因此系统地学习了一下Redis的基础知识,更深入的内容在以后的项目实战中逐步地学习和实践把。

NoSQL概述

NoSQL,not only sql,泛指非关系型数据库。随着现在互联网技术的发展,传统关系型数据库已经无法满足我们的需求,因此出现了非关系型数据库。而非关系型数据库的种类也纷繁多样,能够应对各种各样的使用场景。
现有的互联网场景,有如下的这些需求:
- 高并发的读,高并发的写;
- 海量数据;
- 高扩展性,高可用性;
目前比较流行的NoSQL数据库有:
- MongoDB,CouchDB:文档性数据库;
- Redis,MemCache:键值对数据库;
- Neo4j:图形数据库;
- HBase,Cassandra:列数据库。

Redis概述

Redis是一个Key-Value的键值对数据库。
C语言开发的开源的数据库。
支持的数据类型:
- 字符串;
- 散列;
- 列表;
- 集合;
- 有序集合。
常见的应用场景:
- 缓存;
- 任务队列;
- 分布式集群架构中的session分离;
- ……

Redis数据类型操作命令

字符串string

字符串的操作命令如下:
- set:赋值命令;set a b;
- get:取值命令;get a;
- del:删除:del a;
- getset:先获取再设置;getset a b;
- incr:递增;incr a;
- decr:递减;decr a;
- incrby:递增给定值;incrby a 5;
- decrby:递减给定值;decrby a 5;
- append:字符串追加;append a xxx;

哈希hash

哈希的操作命令如下:
- hset:赋值命令;hset hashkey name xx;
- hmset:批量赋值命令;hmset hashkey name xx age 18;
- hget:取值命令;hget hashkey a;
- hmget:获取多个值;hmget hashkey name age;
- hgetall:获取所有值;hgetall hashkey;
- hdel:删除键值对;hdel hashkey name;
- del:删除整个哈希;del hashkey;
- hincrby:哈希键值对的值增加给定值;hincrby hashkey age 2;
- hexists:判断某个键是否存在;hexists hashkey age;
- hlen:获取哈希中键值对个数;hlen hashkey;
- hkeys:获取哈希中的键;hkeys hashkey;
- hvals:获取哈希中的值;hvals hashkey;

列表list

列表的操作命令如下:
- lpush:头部添加;lpush listkey a b c;
- rpush:尾部添加;rpush listkey aa bb cc;
- lrange:查看列表;lrange listkey start end; (0开始计数,-1代表尾部);
- lpop:头部弹出,返回头部第一个元素;lpop listkey;
- rpop:尾部弹出,返回尾部第一个元素;rpop listkey;
- llen:获取列表元素个数;llen listkey;
- lpushx:当listkey存在时进行头部添加;lpushx listkey x;
- rpushx:当listkey存在时进行尾部添加;
(删除count个value,如果count大于0,从头到尾遍历;count小于0,从尾到头遍历;count等于0,删除所有对应值);
- lset:设置某个索引位置处的值;lset listkey index value;
- linsert:在某个位置处插入值;
linsert listkey before a xx;
linsert listkey after a xx;
- rpoplpush:从某个list尾部弹出,然后压入另一个list头部;
rpoplpush listkey1 listkey2;
场景:消息队列

集合set

集合的操作命令如下:
- sadd:向集合添加元素;sadd setkey a b c;
- srem:从集合中删除元素;srem setkey a b;
- smembers:查看集合中的元素;smembers setkey;
- sismember:判断元素是否在集合中;sismember setkey a;
- sdiff:集合的差集运算;sdiff setkey1 setkey2;
sdiff命令与key的顺序有关,以第一个参数为基准进行差集运算;
- sinter:集合的交集运算;sinter setkey1 setkey2;
- sunion:集合的并集运算;sunion setkey1 setkey2;
- scard:查看集合的元素个数;scard setkey;
- srandmember:随机获取一个集合元素;srandmember setkey;
- sdiffstore:将差集存储到一个新的集合;sdiffstore newsetkey setkey1 setkey2;
- sinterstore:将交集存储到一个新的集合;
- sunionstore:将并集存储到一个新的集合;
set的使用场景:
唯一性的使用场景。

有序集合sorted-set

Sorted-set中的每一个成员都有一个分数与之关联,元素唯一,分数可以不唯一。
有序集合的命令如下:
- zadd:添加元素;zadd zsetkey 20 a 30 b;
若参数中的元素已经存在,则更新分数;返回值的个数中不包含更新分数的元素;
- zscore:查看元素的分数;zscore zsetkey a;
- zcard:查看zset中的元素个数;zcard zsetkey;
- zrem:删除某个元素;zrem zsetkey a;
- zrange:按范围查找;
withscores选项可以带出分数;
- zrevrange:反向排序查看;
- zremrangebyrank:按照索引范围执行删除;
- zremrangebyscore:按分数范围执行删除;
- zrangebyscore:查看分数范围内的元素;
- zincrby:给指定元素增加分数;zincrby zsetkey 3 a;
- zcount:查看某个分数范围内的元素个数;zcount zsetkey 80 90;
使用场景:
譬如积分排行榜之类的。

keys的通用操作

针对keys的操作命令如下:
- keys *:查看所有的key;
- keys my*(keys my?):通配符的查看;
- del:删除指定的key;
- exists:判断key是否存在;
- rename:重命名key;
- expire:设置过期时间,单位是秒;
- ttl:查看距离过期的剩余时间;
- type:查看key对应的值的类型;

Redis的一些特性

多数据库:Redis有多个数据库;有16个数据库;
- select: 选择数据库命令;select 2;
- move:移动指定key到某个数据库;move xxkey 2;
事务:
- multi:开启事务;
- exec:提交;
- discard:回滚;

Redis持久化

RDB和AOF可以单独使用,也可以混合使用。

RDB方式的持久化
默认支持的持久化方式;
在指定时间间隔内将内存数据快照写入文件;
优点:方便备份;重新启动效率高;
缺点:数据丢失不可避免;
AOF方式的持久化

记录日志到文件中;
三种方式:每修改同步;每秒同步;不同步;
优点:更高的数据安全性;日志文件友好;
缺点:重新启动效率低;文件大;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值