1、String:key-value
redis命令不区分大小写,但是key区分的
redis中的数据都是字符串
redis是单线程(不适合存储比较大的数据)
使用incr命令,如果key 不存在,会自动创建key 并自动+1
redis中所有的数据都是字符串
set key value 设置值
get key 获取值
incr key 加一
decr key 减一
2、List
List是有顺序可重复(数据结构中的:双链表,队列),可作为链表 ,从左添加元素 也可以从右添加元素
lpush list a b c d (从左添加元素)
rpush list 1 2 3 4 (从右边添加元素)
lrange list 0 -1 (从0 到 -1 元素查看:也就表示查看所有)
lpop list (从左边取,删除)
rpop list (从右边取,删除)
3、Set
Set无顺序,不能重复
sadd set1 a b c d d (向set1中添加元素) 元素不重复
smembers set1 (查询元素)
srem set1 a (删除元素)
4、Hash: key-field-value
相当于一个key 对应一个map (map中又是key- value),
应用于归类
hset key field value 设置值
hget key field 获取值
hincrby key field num 设置增数量
5、SortedSet(zset)
有顺序,不能重复
适合做排行榜 排序需要一个分数属性
zadd zset1 9 a 8 c 10 d 1 e (添加元素 zadd key score member )
(ZRANGE key start stop [WITHSCORES])(查看所有元素:zrange key 0 -1 withscores)
如果要查看分数,加上withscores.
zrange zset1 0 -1 (从小到大)
zrevrange zset1 0 -1 (从大到小)
zincrby zset2 score member (对元素member 增加 score)
key 命令
expire key second (设置key的过期时间)
ttl key (查看剩余时间)(-2 表示不存在,-1 表示已被持久化,正数表示剩余的时间)
persist key (清除过期时间,也即是持久化 持久化成功体提示 1 不成功0)
del key: 删除key
EXISTS key:若key存在,返回1,否则返回0
select 0 表示:选择0号数据库。默认是0号数据库
Redis持久化方案
RDB:保存到磁盘中;AOF:把数据库操作命令保存到文件中,数据库恢复时把命令重新执行一遍
Redis集群:
集群没有入口,连接任意一个即可
集群的容错机制:发送ping命令,超过半数就认为挂掉
redis集群中至少需要三台服务器来保证高可用,三个备用服务器,至少需要6台服务器,需要使用ruby脚本搭建集群
注意:单机版和集群版不能共存,使用单机版时注释集群版的配置。使用集群版,把单机版注释
Redis的使用场景
1、活动倒计时方案
1、活动开始的时间是固定的
2、使用SELECT NOW();取出当前时间并作为基准时间
3、拿活动开始时间-基准时间可以计算出一个秒为单位的数值,并作为活动过期时间
4、在redis中设置一个key(活动开始标识)。使用expire命令将第三步计算出来的时间设置为key的过期时间
5、使用redis中的Ttl命令取出key的剩余生存时间,在前台展示活动剩余的时间
2、秒杀方案
1、把商品的数量放到redis中
2、秒杀时使用redis中的decr命令对商品数量减一。如果不是负数说明抢到
3、一旦返回数值变为0说明商品已售完
RedisTemplate及其相关方法