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 使用场景
- 聊天记录
- 社交网络发布的消息
三、sets
Set 是 String 的无序列表,类似于Java set集合特性,即:无序不重复
#添加set值
sadd set1 1 3 5 7
#查询set值
smembers set1
#查询单个元素在set中是否存在,存在返回1,不存在返回0
sismember set 5
Sets使用场景
- 网站排行榜
- 随机发牌
发牌案例:
#创建扑克
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 #随机发牌 第二张
#以此类推完成发牌

浙公网安备 33010602011771号