redis-01 基本命令与原理

在这里插入图片描述

Redis五大数据类型:
string、List、Set、Hash、ZSet(有序集合)
相关命令:
set k1 v1
get k1
exists k1 是否存在
type k1 查看键类型
dbsize 查看当前库大小
del k1 删除k1
unlink k1 异步删除,先从keyspace中删除,后来再真正删除
expire k1 10 设置10s过期时间
ttl key -1:永久 -2:已过期
select 1 切换到1号库
flushdb 清空当前库
flushall 清空所有库

1.类型介绍
(1)String(字符串),最基本数据类型,二进制安全,可包含任何可序列化对象或者图片数据,一个字符串value最多512M。
(2)基本命令:
①setnx k1 v1 只有k1不存在时才存值
②append k1 vdd 在k1后面追加字符串
③set k1 v2 如果k1存在,会覆盖k1
④incr k3 数字值加1
⑤decr k3 数字值减1
⑥incr k3 10 指定步长+10
⑦decr k3 10 指定步长-10
⑧mset k1 v1 k2 v2 k3 v3 批量设置键值对
⑨mget k1 v1 k2 v2 批量获取
⑩msetnx k1 v1 k3 v3 k4 v4 有一个重复都执行不成功
⑪getrange name 0 3 获取0到3位置,(左闭右闭)
⑫setex age 20 value 设置age过期时间20秒,值为value
⑬getset name lucy 替换值,获取到的是上一次的值,但是值已经替换掉了。
(3)原理
类似于ArrayList可变长度存储空间
2.List: (列表)单键多值,底层是双向链表,对两端操作性能很高。

常用命令:
lpush k1 v1 v2 v3 头插法(从左往右插入)
rpush k1 v1 v2 v3 尾插法(从右往左插入)
lrange k1 0 -1 查看0到结尾的所有值
lindex k1 0 查看第一个位置元素
llen k1 查看长度
linsert k2 after ”value” “new value” 在值后边插入新值
lrem k1 2 v1 删除k1下表为2的值
lset k1 1 hello 替换列表下表为1的值

redis中List数据结构:双向链表

3.Set(集合)
(1)string类型的无序集合,底层是一个value为null的hash表,所以添加、删除、查找的复杂度都是O(1)
(2)常用命令
①sadd k1 v1 v2 v3 添加值
②smembers k1 查找set所有值
③sismember k1 v1 判断k1对应的v1值是否存在
④scard k1 统计集合长度
⑤spop k1 随机取出一个值
⑥srandmember k1 随机取出一个值,但是不删除
⑦smove k1 k2 v3 将v3值从k1移到k2
⑧sinter k1 k2 交集
⑨sunion k1 k2 合集
⑩sdiff k1 k2 差集,查询k1有的而k2没有的。
(3)数据结构
数据字典,是一个hash表。

4.hash
(1)键值对集合,string类型的field,value映射表
(2)常用命令:
①hset user id 1 设置hash值,key为user,value为id 1
②hget user id 获取值
③hmset user id 1 name zhangsan age 20 批量添加
④hexists user id 判断是否存在
⑤hkeys user 获取user所有key
⑥hvals user 获取user所有value
⑦hincrby user age 2 岁数加2
⑧hsetnx user gender 1 添加不重复的键值对
(3)数据结构:
Hash类型对应两种数据结构,ziplist(压缩列表)、hashtable(hash表)、当field-value长度较短且个数较少时,使用ziplist(类似于命名空间),否则使用hashtable。

类似于Map<String,Object>类型

第二种:ziplist 第三种:hash

5.zset(有序集合)
(1)常用命令:
①zadd topn 200 java 300 c++ mysql 400 php 500 添加数据
②zrangebyscore topn 0 -1 withscores 排名从小到大
③zrangebyscore topn 300 500 从小到大排
④zrevrangebyscore topn 500 200 从大到小排
⑤zincrby topn 500 java Java加500
⑥zrank topn java 看Java的排名
⑦zrange topn 0 -1
(2)跳跃表

6.配置文件详解
(1)bind 127.0.0.1 绑定域名,注释掉,开放给别的域名访问
(2)protected-mode yes 默认yes,改成no,关闭保护模式
(3)daemon yes 默认yes,改成no,后台启动
(4)pidfile /var/run/redis_6379.pid pid文件
(5)loglevel notice 默认notice(生产环境),debug(debug日志),verbose(info日志打印),warning(打印警告)
(6)logfile “” 日志输出文件路径,默认为空
(7)databases 16 16台redis库
7.发布订阅
(1)概念:sub/pub模式,发布者(sub)发布消息,消费者(pub)接收消息
(2)演示:
①订阅信道1 subscribe channel1
②发布信道1,发送消息hello publish channel1 hello
8.新数据类型Bitmaps
(1)位图,访问过的是1,未访问的是0,(0,1就是所谓的偏移量)

(2)操作:
①setbit user 1 1 存值
②getbit user 1 取值
③bitcount user 0 -1 统计用户数量,0(开始位置),-1(结束位置)
④bitop user1 user2 统计用户交集,如果单个用户有重复,会去掉。
(3)bitmap与set比较,bitmap不是一种数据类型,而是一种位操作字符串。主要针对活跃用户量进行存储。

9.hyperlog
(1)根据输入元素统计基数个数,而不会存储输入元素,有去重效果
①pfadd k1 v1 v2 添加
②pfcount k1 统计个数
③pfmerge k1 k2 program 合并
10.geospatial
(1)经纬度
(2)geoadd china:city 111.34 33.33 shanghai 133.23 33.33 beijing 111.34 33.32 chongqing 添加带经纬度的城市,经度:-180到180 维度:-90到
(3)geopos china:city shanghai 取出shanghai经纬度
(4)geodist china:city beijing chongqing 计算beijing与chongqing的直线距离
(5)georadius china:city 110 30 100 km 统计经度110纬度30,方圆100km内的城市。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级无敌暴龙战士塔塔开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值