Redis的基本了解
首先我们可以看下官方文档是如何介绍Redis的:
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
应用场景
1. 缓存
2. 分布式锁
3. 分布式Session
4. 消息队列
Redis的五大数据类型
-
string 字符串
-
hash 哈希
-
list 列表
-
set 集合
-
zset 有序集合
1.String(字符串)
①添加、查询、追加、获取长度,判断是否存在的操作
②自增、自减操作
③截取、替换字符串操作
④设置过期时间、不存在设置操作
⑤mset、mget操作
⑥添加获取对象、getset操作
2.List(列表)
①lpush(左插入)、lrange(查询集合)、rpush(右插入)操作
②lpop(左移除)、rpop(右移除)操作
③lindex(查询指定下标元素)、llen(获取集合长度) 操作
④lrem(根据value移除指定的值)
⑤ltrim(截取元素)、rpoplpush(移除指定集合中最后一个元素到一个新的集合中)操作
⑥lset(更新)、linsert操作
3.Set(集合)元素唯一不重复
①sadd(添加)、smembers(查看所有元素)、sismember(判断是否存在)、scard(查看长度)、srem(移除指定元素)操作
②srandmember(抽随机)操作
③spop(随机删除元素)、smove(移动指定元素到新的集合中)操作
④sdiff(差集)、sinter(交集)、sunion(并集)操作
4.Hash(哈希)
①hset(添加hash)、hget(查询)、hgetall(查询所有)、hdel(删除hash中指定的值)、hlen(获取hash的长度)、hexists(判断key是否存在)操作
②hkeys(获取所有key)、hvals(获取所有value)、hincrby(给值加增量)、hsetnx(存在不添加)操作
5.zSet(有序集合)
①zadd(添加)、zrange(查询)、zrangebyscore(排序小-大)、zrevrange(排序大-小)、zrangebyscore withscores(查询所有值包含key)操作
②zrem(移除元素)、zcard(查看元素个数)、zcount(查询指定区间内的元素个数)操作
Redis事务
Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。
总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
①原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
②一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
③隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
④持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
在Redis事务没有没有隔离级别的概念!
在Redis单条命令式保证原子性的,但是事务不保证原子性!