Redis 基本使用

简单了解

Redis是一个使用ANSIC编写的开源、支持网络、基于内存分布式、可选持久性键值对存储数据库

redis是基于内存执行的,单线程执行也能跑的很快哦,读写速度在纳米级别,性能极高

Redis 数据结构
  • redis 以key-value存储,value 有Stirngs(二进制安全)、Lists、Sets、Sorted Lists、Hash等结构
  • 除此之外还有基于二进制位图运算的bitmaps, 这个比较烧脑,感兴趣可以自行查阅资料
一、Redis Strings
#存储元素
set key value
#获取元素
get key
#删除元素
del key
#检查元素是否存在
exists counter[...]
#更新元素:重写key
set key wangbin
#字符原子性递增递减操作
set counter 100 #创建int类型元素
incr counter	#++递增
get counter	#获取元素
type counter	#查看元素类型
incrby counter 50	#元素递增50 
incrbyfloat counter 2.4 #单精度元素值递增
decrby counter 100 #递减操作

#除以上操作之外,Redis还有一个至关重要的操作就是超时特性
set key value ex 10  # ex 10 表示设置10秒过期,10秒后该键会自动删除
#创建后设置过期时长
set key value 
expire key 100
#ttl 命令来查看键的存活时间
ttl key
#通过keys * 查找元素
keys * #查找全部存活元素
keys k* #查找以k开头的所有元素
二、Lists

Lists 是有Linked List实现的有序列表,也可以理解为数组。它的插入非常快,即使有百万级数据,插入时间复杂度也是常数级别的。恰恰,它随机查找元素的效率就比arrays差了不少。

#lpush 从左边插入元素  rpush 表示在右边插入元素
lpush list1 a b c d #该命令表示 给list1左插入4元素,结构为d->c->b->a
rpush list2 a b c d #该命令表示 给list2右插入4元素,结构为a->b->c->d

#lrange 从左边查询集合元素,有两索引表示起始元素与终止元素
lrange list1 0,-1 #表示查找list1的所有值,0:起始位置 -1:最终位置
#lpop 和 rpop 删除元素或可以理解为弹出元素,lpop会从左弹出元素并删除该元素,rpop同理。 lpush和lpop组成了栈结构,就像小时候玩的手枪,押的首发子弹最后打出,lpush和rpop组成的就是队列的结构了,就像排队打饭,来的完就吃的迟
lpop list1 #从左头部开始弹出元素
lpop list1 2 #从左头部开始弹出两个元素

Lists 使用场景

  1. 聊天记录
  2. 社交网络发布的消息
三、sets

Set 是 String 的无序列表,类似于Java set集合特性,即:无序不重复

#添加set值
sadd set1 1 3 5 7
#查询set值
smembers set1
#查询单个元素在set中是否存在,存在返回1,不存在返回0
sismember set 5

Sets使用场景

  1. 网站排行榜
  2. 随机发牌

发牌案例:

#创建扑克
sadd poker A 1 2 3 4 5 6 7 8 9 10 J Q K
#现在,我们想要给每个玩家发 2 张牌。SPOP 命令删除一个随机元素,把它返回给客户端,因此它是完全合适的操作。但是,如果我们对我们的牌直接调用它,在下一盘我们就需要重新充满这副牌。开始,我们可以复制 poker 键中的内容,并放入 game:1:poker 键中。这是通过 SUNIONSTORE 实现的,它通常用于对多个集合取并集,并把结果存入另一个 set 中。但是,因为一个 set 的并集就是它本身,我可以这样复制我的牌:
sunionstore game:1:poker poker #复制
spop game:1:poker #随机发牌
spop game:1:poker #随机发牌 第二张
#以此类推完成发牌
posted @ 2021-03-16 21:14  鲜衣路马少年时  阅读(30)  评论(1)    收藏  举报