Redis干货总结

本文深入介绍了Redis的五大数据类型:字符串、字典、列表、集合和有序集合,详细阐述了它们的特性及应用场景。对于字符串,常用操作包括设置、获取和删除;字典适用于存储对象并修改属性;列表支持队列操作;集合提供唯一性元素;有序集合按权重排序元素。此外,还涵盖了Key的操作和数据库管理,包括删除、有效期设置、数据库切换等。了解这些基础知识对于高效使用Redis至关重要。
摘要由CSDN通过智能技术生成

一、redis五种数据类型

类型简介特性场景
string(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化对象一般情况下,开发中使用频率最高,常储存普通的key,如限流、商品信息等较固定的zhi
hash(字典)键值对集合,即编程语言中的map类型适合存储对象,并且可以像数据库中的update一个属性一样只修改某一项属性值存储、读取、修改用户属性
list(列表)链表(双向链表)增删快,提供了操作某一元素的api最新消息排行;消息队列
set(集合)hash表实现,元素不重复添加、删除、查找的复杂度都是O(1),提供了求交集、并集、差集的操作共同好友;利用唯一性,统计访问网站的所有Ip
sorted set(有序集合)将set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行了天然排序排行榜;带权重的消息队列

 

二、各数据类型在命令行的基本操作

(这里具体的命令稍微看下即可,也可直接跳过,更多命令和用法推荐看官网api

1、string

ps:字符串值最大值为512m

  • 操作单条

增:set key value
查:get key
删:del key
  • 操作多条

增:mset key value [key1 value1]
查:mget key [key1]
  • 其他命令 

strlen key //获取字符串长度
append key value //有则追加,无则新建
setnx key value //不存在就设置,存在就不设置
incr key //自增 1
incrby key num //给key的值增加num(int 类型),num 正数则为加,num 为负数 则为减
incrbyfloat key num //给key的值增加num(float 类型)
decr key //自减 1
decrby key num //给key的值减num
setex key second value //设置key的值为value存活时间为second秒
psetex key millisecond value //设置key的值为value存活时间为millisecond毫秒

2、Hash

  1. Hash类型的value只能存字符串,不允许再嵌套其他类型,如果数据为空则为Nil

  2. 每个Hash可以存储2 32 − 1 2^{32}-1232−1个键的值对

  3. Hash类型十分贴近对象的数据存储,并且可以灵活添加、删除对象属性。但Hash类型设计并不是存在量而设计的,切记不可滥用,更不可将Hash作为对象列表使用

  4. hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据时效率会降低,很有可能成为数据访问的瓶颈

单条操作

增:hset key field value
查:hget key field
删:hdel key field

多条操作

增:hmset key field value [field1 value2]
查:hmget key field [field1]

其他命令  

hgetall key //获取key的全部的值
hlen key //获取key的值的数量
hexists key field //是否存在field
hkeys key //所有key的字段(field)
hvals key //所有key的值
hincrby key field num //给key的field的值增加num (num 为int值)
hincrybyfloat key field num //给key的field的值增加num (num 为float)
hsetnx key field value //存在不设置,不存在设置

3、List

  1. list中保存的数据都是String,数据总量是有限的,最多2 32 − 1 2^{32}-1232−1个元素
  2. list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作(或以栈的形式进行入栈出栈操作)
  3. 当stop的值为-1时,获取的是全部数据
  4. list对数据进行分页操作,通常第一页的数据使的信息来自list,其他页面的数据通过数据形式进行加载
添加
lpush key value [value1] //从左添加
rpush key value [value1] //从右添加
获取
lrange key start stop
lindex key index
llen key
获取并移除
lpop key //从左出
rpop key //从右出


案例结果
lpush	list	a	b	c
结果:c b a
===============================
rpush list a	b	c
结果:a b c
===============================
list=[a	b	c]
lpop list
结果:b c
===============================
list=[a b c]
rpop list
结果:a b
===============================

4、Set

增:sadd key member [member1]
查:smembers key
删:srem key member [member1]
获取总量:scard key
判定是否存在:sismember key member
随机获取(原集合保留):srandmember key [count]
随机获取(原集合不保留):spop key
集合交集:sinter key key1 key2
集合并集:sunion key key1 key2
集合差集:sdiff key key1 key2
存储集合交集:sinterstore destination key key1 key2
存储集合并集:sunionstore destination key key1 key2
存储集合差集:sdiffstore destination key key1 key2
集合元素移动:smove source destination member

5、Sorted_Set

增:zadd key score member [score1 member1]
删:zrem key member [member1]
获取全部(正序):zrange key start stop [withscores]
获取全部(倒序):zrevrange key start stop [withscores]
按条件查(正序):zrangebyscore key min max [withscore limit]
按条件查(倒序):zrevrangebyscore key max min [withscore limit]
按条件删除(索引):zremrangebyrank key start stop
按条件删除(积分):zremrangebyscore key min max
获取集合总量:zcard key | zcount key min max
存储集合交集: zinterstore destination numkeys key key1
存储集合并集:zunionstore destination numkeys key key1
获取索引(正序):zrank key member
获取索引(倒序):zrevrank key member
score值获取:zscore key member
score值修改:zincrby key num member

6、小结

1)String存储对象(Json) 对比 Hash存储对象

  1. String存在对象讲究整体性,以读为主
  2. Hash存储对象讲究分散性,以写为主

 

三、Key的操作

(这里具体的命令也是稍微看下即可,也可直接跳过)

删除:del key
判断是否存在:exists key
获取key类型:type key
指定有效期:
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
获取有效期:
ttl key
pttl key
设置永久:persist key
查询key:key pattern //*,?,[]
重命名:rename key newkey | renamenx key newkey
对key排序:sort

四、数据库的操作

(这里的数据清除命令最好记住,开发过程中会用到的)

选择数据库:select index
数据移动:move key db
数据库大小:dbsize

数据清除:
单库删除:flushdb
多库删除:flushall

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值