redis中的5种基本数据类型和基本命令

redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等
1.String字符串
1.string是redis的基本数据类型,一个key对应一个value
2.string类型是二进制安全的。意思是redis的string可以包含任何类型的数据。比如jpg图片或者序列化的对象
3.string类型是redis最基本的数据类型,一个键最大能存储512MB
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改,破译等,如果被攻击,能够及时检测出来
二进制安全的特点:
1.编码,解码发生在客户端完成,执行效率高
2.不需要频繁的编解码,不会出现乱码
常用命令
1.set keyName 字符串 如果已经存在则覆盖

2.setnx keyName 字符串 如果key不存在则创建(解决分布式锁的问题方法之一)

3.mset keyName value… 同时设置多个key-value

4.get keyName 如果key不存在返回一个nil 如果不是字符串返回一个错误

5.getrange keyName start end 根据下标截取一段字符串

6.getbit keyName offest对key所存储的字符串值,获取指定偏移量上的位(bit)

7.mget keyName…获取多个key的值

8.getset语法 getset keyName value 用于设置指定key的值,并返回key的旧值,当key不存在时返回nil

9.strlen key 获取key所存储的的字符串长度

10.incr keyname 自增 把存储在key的字符串+1,如果key不存在,则把key的值初始化为0然后incr

11.decr keyname 自减 把存储在key的字符串-1,如果key不存在,则把key的值初始化为0然后decr

12.incrby keyname n 将key中value加上指定的增量

13.decrby keyname n 将key中value减上指定的增量

14.appnd keyname 给制定key拼接字符串,如果key不存在则创建并为其赋值

应用场景

1.string通常用于保存单个字符串或者JSON数据

2.因为string是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储

3.计数器(常规key-value 缓存应用,常规计数:微博数,粉丝数)

4.incr等指令本身就是具有原子操作的特性,所以它是线程安全的

hash类型

每个hash可以存储的大小为2^32-1个值

1.hset keyName(bean名称) bean属性名称 属性值

2.hget keyName(bean名称) bean属性名称

3.hmget keyName(bean名称) bean属性名称。。。。(获取所有给定字段的value)

4.hmset keyName(bean名称) bean属性名称 属性值 …

5.hgetall keyName 返回hash表中所有的字段和值(相当于获取对象的所有属性)

6.hkeys keyName 获取所有哈希表中的字段

7.hlen 获取哈希表中字段的数量

8.hdel keyName … 删除制定表字段

9.hsetnx keyName value 只有字段不存在时,设置哈希表字段的值

10.hincrby keyName field increment 为某个字段值加上一个increment

11.hincrbyfloat keyName field increment 为某个字段的浮点值加上一个increment

12.hexists keyName field 查看哈希表key中,指定字段是否存在
应用场景:存储对象

list类型

基本命令:

1.lpush keyName value 向list头部添加

2.rpush keyName value 向list尾部添加

3.lpushhx keyName value 向list头部添加,如果列表不存在则操作无效

4.rpushhx keyName value 向list尾部添加,如果列表不存在则操作无效

5.llen keyName 获取列表长度

6.lindex keyName index 从左获取第index个元素

7.lrange keyName start end 获取指定范围内的元素

8.lpop keyName 删除最左侧元素并返回

9.rpop keyName 闪出最右侧元素并返回

10.blpop keyName timeout 弹出最左侧元素并设置超时时间,如果列表为空则等待在超时时间内有元素弹出(单位s)

11.brpop keyName timeout 弹出最右侧元素并设置超时时间,如果列表为空则等待在超时时间内有元素弹出(单位s)

12.ltrim keyName start end 对一个列表进行截取

13.lset keyName index value 从左边更改index位置的值

14.linsert key before|after word value 在word之间或者之后插入value

应用场景:

1.对数据量大的集合进行数据删减

列表数据显示,关注列表,粉丝列表,留言评价等_分页,热点新闻(top5)等

利用lrange还可以很方便的实现分页功能,在博客系统中,每篇博文的评论也可以存入一个单独的list中
start=(pageNum-1)pageSize
end=pageNum
pageSize-1

高级命令

1.rpoplpush source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

2.rpoplpush a1 al相当于一个循环列表

set数据类型

1.sadd keyName values… 向集合添加一个或多个成员

2.scard keyName 获取集合的成员数

3.smembers keyName 获取集合中所有的成员

4.sismember keyName memeber 判断member元素是否是集合key的成员(开发中:验证是否存在判断)

5.srandommember keyName count 返回集合中一个或多个随机数

6.srem keyName member1… 移除集合中一个或多个成员

7.spop keyName count 移除并返回集合中的一个随机元素

8.smove source destination member 将member元素从source集合移动到destination

9.sdiff keyName… 返回给定所有集合的差集(左侧) sdiffstore destination keyName… 返回给定所有集合的差集并存储在destination中

10.sinter keyName… 返回给定集合的交集 sinterstore destination keyName… 返回给定所有集合的交集并存储在destination中

11.sunion keyName… 返回所有给定集合的并集 sunionstore destination keyName… 返回给定所有集合的交集并存储在destination中

zset(有序集合)数据类型

1.zadd keyName score… member… 向有序集合添加一个或者多个成员,或者更新已经存在的分数

2.zcard keyName 获取有序集合的成员数

3.zcount keyName min max 计算在有序集合中指定区间分数的成员数

4.zrank keyName member 返回有序集合中指定成员的索引

5.zrange key start stop 通过索引区间返回有序集合指定区间内的成员(低到高)

6.zrevrange key start stop 通过索引区间返回有序集合指定区间内的成员(高到低)

7.zrem keyName member… 移除有序集合中的一个或者多个成员

8.zremrangerbyrank keyName start stop 移除有序集合中给定的排名区间的所有成员

9.zremrangebyscore keyName min max 移除有序集合中给定的分数区间的所有乘员

应用场景:

排行榜

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值