ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis的基础知识和五大基本类型

2022-09-10 00:03:46  阅读:231  来源: 互联网

标签:key2 key1 redis value 基础知识 获取 key 类型 五大


redis的基础知识和五大基本类型

Redis(Remote Dictionary Server):远程字典服务,是一个开源的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,key-value数据库,提供多种语言的API

redis的特点与应用场景

特点

  1. 速度快

    内存存取
    redis用c语言实现,执行速度快
    redis采用单线程,避免多线程资源竞争的问题
    redis源码精简
    
  2. 不仅支持简单的key-value类型的数据,还提供list,set,hash,zset等数据结构的存储

  3. 丰富的功能

    提供key过期功能,用于实现缓存
    提供发布订阅功能,用于消息队列
    支持lua脚本功能
    提供简单的事务功能
    提供pipeling功能,可以多条命令一次io,减少网络开销
    
  4. 简单稳定

  5. 客户端语言多(支持java,python,c,c++,php等等)

  6. 持久化

    RDB与AOF,数据写入磁盘,重启之后依然可以使用
    
  7. 主从复制

  8. 高可用与分布式

应用场景

  1. 缓存
  2. 排行榜
  3. 计数器
  4. 消息队列
  5. 社交网络

基本命令

redis默认有16个数据库,客户端默认连接的是第0个,以下是进入客户端后的常见命令(redis有服务端和客户端,进入相应路径执行./redis-cli即可)

针对连接的命令

quit:  关闭连接
auth:  密码认证
ping:  检查是否连接上

针对value操作的命令

select n:  选择第n个数据库
keys *:  查看此数据库的所有key
flushdb:  清除当前数据库的所有key
flushall:  清除所有数据库的key
exist key:  确认一个key是否存在
del key:  删除一个key
type key:  返回值的类型
dbsize:  返回当前数据库中的key数量
expire key n: 设定key的过期时间,单位为秒
ttl key:  获取key剩余的生存时间
clear:  清空当前命令行

五大基本类型与常用命令

String类型

String类型用于存储字节序列,包括文本、序列化对象和二进制数组

使用场景:对象缓存存储,计数器

默认情况下,单个Redis字符串最大为512MB

String类型的常用命令

set key value:  设值名为key的value值
get key:  获取key中的value值
strlen key:  获取key中value值的长度
incr key:  将key中的value值增加1,若之前key为空则值为1
decr key:  将key中的value值减少1,若之前key为空则值为-1
incrby key n:  将key中的value值增加n
decrby key n:  将key中的value值减少n
getrange key n m:  截取key中value值中的第n-m位的值,当为0 -1时则获取全部字符串
setex key n value:  设置名为key的value值存活时间为n妙
setnx key value:  如果key不存在则设置key值为value,反之则不赋值
mset key1 value1 key2 value2:  同时设置多个键值对
mget key1 key2:  同时获取多个值
msetnx key1 value1 key2 value2:  原子性设置多个键值对,要么一起成功,要么一起失败
getset key value:  如果key值存在则更新为value值并获取到旧值,如果key不存在则返回空(nil)

可以用分隔符的方式存同类别不同参数的数值
如:set obj:1:id value1 obj:1:name value2
通过加前缀的方式来存入对象的参数,不过也可以转换成json格式作为一个字符串存入

List类型

List类型的value值为链表

使用场景:实现堆栈和队列,为后台工作系统构建队列管理

List的最大长度为2^32-1(4294967295)个元素

List类型的常用命令

将链表视为队列(先进先出)FIFO
lpush key value1 value2:  从左边添加1-n个value值
rpop key n:  从右边取出1-n个value值
将链表视为堆栈(先进后出)FILO
lpush key value1 value2:  从左边添加1-n个value值
lpop key n:  从左边取出1-n个value值
--
lange key n m:  返回n-m区间的值,若0 -1则获取全部的值
llen key:  返回key值的长度
lmove key1 key2 left|right left|right:  从一个链表中取出并放入另一个链表中,可以定义从左还是右边取与存

Set类型

Set类型的value是一个无序不重复集合

使用场景:跟踪唯一项目,表示关系,执行常见的集合运算,随机抽取

Set最大为2^32-1(4294967295)个成员

Set类型的常用命令

sadd key value1 value2:  添加新成员到集合中
smembers key:  查看指定集合中的成员
sismember key value:  判断value值是否在该集合中
scard key:  获取指定集合中成员个数
srem key value:  移除元素中指定的值
srandmember key n:  随机抽选出n个成员
smove key1 key2 value:  将value值从key1移动到key2
--
集合间运算
sdiff key1 key2:  差集 key1-key2 
sinter key1 key2: 交集 key1 ∩ key2
sunion key1 key2: 并集 key1 ∪ key2

Hash类型

Hash类型的value是一个键值对

使用场景:存储基本对象,分组计时器

hash最多存2^32-1(4294967295)个字段-值对

Hash类型的常用命令

hset key field1 value1 field2 value2:  设置多个key-value值
hget key field1:  获取一个字段的值
hmset key field1 value1 field2 value2:  设置多个key-value值
hmget key field1 field2:  获取多个字段值
hdel key field1:  删除指定key中字段-值对
hlen key:  获取key值的字段-值对个数
hexists key field1:  判断key值中的指定字段是否存在
hkeys key:  只获取所有字段
hvals key:  只获取所有值
hgetall key:  获取所有字段-值对
--
hincrby key filed1 n:  指定给key中的字段值加n

Zset类型

Zset类型的value是一个有序(有权重score)不重复的集合

使用场景:排行榜,速率限制器

Zset类型的常用命令

排行榜
zadd key1 score member1  :添加一个权重为score的用户在key中,如果用户已存在则更新权重score
zrangebyscore key -inf +inf :显示全部用户,从小到大排序
zrevrange key 0 -1:  显示全部用户,从大到小排序
zrange key 0 2 rev withscore:  取前三名用户 从大到小排 带分数
zrank key member:  返回用户的排名,从小到大排序
zrevrank key member: 返回用户的排名,从大到小排序
--
zrem key member:  删除key中的指定用户
zcard key:  获取key中的用户总数
zcount key n m:  获取指定区间的用户数量

标签:key2,key1,redis,value,基础知识,获取,key,类型,五大
来源: https://www.cnblogs.com/shenStudy/p/16675569.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有