Redis学习1——五种基础类型

一.基础命令
1.获得符合规则的键名列表(*:多个字符,?:一个字符),会遍历redis中的所有键,键多时影响性能
keys *
2.判断一个键是否存在
exists key
3.删除键,不支持通配符
del key
4.获得键值的数据类型
type key
5.键的命名规范
项目:功能:对象
6.不支持数据类型嵌套

二.字符串类型
一个字符串类型键允许存储的数据 最大容量为512mb

适用场景:
1.利用递增数字incr key 来生成订单号,因为incr为原子操作,适用于高并发的情况(最近系统的装车单号会出现并发的情况,装车单号为日期+当日装车单数,例如20200423000001,其中当日装车单数即可通过incr key来获取)

指令:
1.赋值:set key value
2.取值:get key
3.递增数字(incr是原子操作,可用于记录网站访问量;生成自增id等): incr key 递减decr key
4.增加指定的整数: incrby key increment 递减decrby key decrement
5.尾部追加值(如何value有空格要加""): append key value
6.获取字符串长度:strlen key
7.同时获得/设置多个键值:
mget key1 key2
mset key1 value1 key2 value2

三.散列类型
用处:
1.存储博客的名称,标签,作者,内容等信息

指令:
1.赋值(不区分新增或更新):
hset key field value
hmset key field1 value1 field2 value2
2.取值:
hmget key field1
hmget key field1 field2
hgetall key
3.判断字段是否存在
hexists key field
4.当字段不存在时赋值(原子操作,字段存在,不执行任何操作,字段不存在,新增)
hsetnx key field value
5.增加数字
hincrby key field increment
6.删除字段
hdel key field1 field2
7.只获得字段名或字段值
hkeys key
hvals key
8.获得字段数量
hlen key

四.列表类型
内部使用双向链表,向两端添加元素的时间复杂度为O(1)

用处:
1.适合用来记录日志,加入新日志速度很快
2.搭配lpush和lpop,把列表当做栈
3.搭配lpush和rpop,把列表当做队列
4.使用lrange实现分页

指令:
1.向两端增加元素
lpush key value1 value2
rpush key value1 value2
2.从列表两端弹出元素
lpop key
rpop key
3.获取列表中的元素个数
llen key
4.获得列表片段(包含最右边的元素,支持负索引-1代表最右边的第一个元素,lrange key 0 -1 可以获取列表中所有元素)
lrange key start stop
5.删除列表中的指定值(count>0,从左边开始删,count<0,从右边开始,count=0,删除所有)
lrem key count value
6.获得/设置指定索引的元素值(将列表当做数组使用)
lindex key index
lset key index value
7.只保留列表指定片段(ltrim+lpush命令一起使用来限制列表中元素的数量)
ltrim key start end
8.向列表中插入元素
linsert key before|afer pivot value
9.将元素从一个列表转到另一个列表(过程原子,当把列表作为队列使用时,rpoplpush可以在几个队列中传递数据,
可实现一个网站监控系统,使用一个队列存储需要监控的网址,然后监控程序不段使用此命令循环取出一个网址测试可用性)
rpoplpush source destination

五.集合类型
内部使用值为空的散列表实现

用处:
1.标签,通过复合标签来找文章

指令:
1.增加/删除元素
sadd key member1 member2
srem key member1 member2
2.获得集合中的所有元素
smembers key
3.判断元素是否在集合中
sismember key member1
4.集合间运算(差集,交集,并集)
sdiff key1 key2
sinter key1 key2
sunion key1 key2
5.获得集合中的元素个数
scard key
6.将集合运算的结果进行存储
sdiffstore destination key1 key2
sinterstore destination key1 key2
sunionstore destination key1 key2
7.随机获得集合的元素(count为负数是,结果可能并不随机,算法:先从桶中随机挑出一个非空的桶,再从桶中选择一个元素,如果一个元素占了一个桶但没有在链表,选中机率会变大)
srandmember key count
8.从集合中弹出一个元素
spop key

六.有序集合类型
用处:
1.实现按点击量排序,id为member,点击量为score,每次用户访问一篇文章时,通过"zincrby key 1 文章id"更新访问量
2.改进按时间排序,或实现按月份查数据

与列表的区别
1.列表通过链表实现,获取两端数据速度快,访问中间数据速度慢,更适合"新鲜事"和"日志"等很少访问中间元素的应用
有序集合使用散列表和跳跃表实现,即使访问中间数据也很快,时间复杂度O(log(N))
2.列表不能简单调整某个元素的位置,但有序集合可以(通过更改这个元素的分数)
3.有序集合要比列表类型更耗费内存

指令:
1.增加元素(score可以是浮点数,+inf,-inf表示正无穷和负无穷)
zadd key score member score1 member1
2.获得元素分数
zscore key member
3.获得排名在某个范围的元素列表 (如果想拿到member和score可以加上withscores)
zrange key start stop [withscores]
zrevrange key start stop [withscores]
4.获得指定分数范围的元素
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
zrevrangebyscore key max min
5.增加某个元素的分数
zincrby key increment member
6.获得集合中的元素的数量
zcard key
7.获得指定 分数范围内的元素个数
zcount key min max
8.删除一个或多个元素
zrem key member key1 member2
9.获得元素排名
zrank key member
zrevrank key member

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值