西安都蓝网站建设,wordpress 绑定多个二级域名,小学校园文化设计公司,网站下载不了视频1. 基本命令
命令不区分大小写#xff0c;而key是区分大小写的
# select 数据库间的切换 数据库共计16个
127.0.0.1:6379 select 1# dbsize 返回当前数据库的 key 的数量
127.0.0.1:6379[1] dbsize# keys * 查看数据库所有的key
127.0.0.1:6379[1] keys *# fl…1. 基本命令
命令不区分大小写而key是区分大小写的
# select 数据库间的切换 数据库共计16个
127.0.0.1:6379 select 1# dbsize 返回当前数据库的 key 的数量
127.0.0.1:6379[1] dbsize# keys * 查看数据库所有的key
127.0.0.1:6379[1] keys *# flushdb 清除当前数据库
127.0.0.1:6379[1] flushdb# flushall 清除全部数据库的内容
127.0.0.1:6379[1] flushall# exists key 判断某个 key 是否存在
127.0.0.1:6379[1] exists name# type key 查看你的 key 是什么类型
127.0.0.1:6379[1] type name# del key 删除指定的 key 数据 阻塞删除 数据比较大的时候会产生等待 不要删除大的key,等待时间长阻止了其他资源的操作
127.0.0.1:6379[1] del name# unlink key 根据 value 选择非阻塞删除 异步删除一个或多个键
# UNLINK 命令的主要特点是它是非阻塞的unlink命令仅仅是删除键值对并不会立即将数据从磁盘上删除 它会在后台异步地删除键值对而不会阻塞服务器的正常操作
# UNLINK 命令非常适合于删除大量键值对或者删除耗时较长的键值对
# UNLINK 命令不接受模式匹配参数只能指定具体的键名
127.0.0.1:6379[1] unlink name# expire key 过期时间 为给定的 key 设置过期时间
127.0.0.1:6379[1] expire name 10# ttl key 查看还有多少秒过期-1 表示永不过期-2 表示已过期
127.0.0.1:6379[1] ttl name# move name 数据库编号 移除当前的key到其他数据库
127.0.0.1:6379[1] move name 1# clear 清屏
127.0.0.1:6379[1] clear# auth 密码 客户端登陆进行密码认证
127.0.0.1:6379[1] auth 123456# quit 服务器关闭连接
127.0.0.1:6379[1] quit# shutdown 正常关闭数据保存 redis服务关闭
127.0.0.1:6379[1] shutdown# config set key value 修改配置文件 例如设置密码
127.0.0.1:6379[1] config set requirepass 123456# config get key 获取配置文件key的值
127.0.0.1:6379[1] config get requirepass#help 类型
help string
help list
help hash
help hyperloglog 2.String字符串类型
String 是 Redis 最基本的类型一个 key对应一个 value
String 类型是二进制安全的。意味着 Redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象
String 类型是 Redis 最基本的数据类型一个 Redis 中字符串 value 最多可以是 512M 数据结构
String 的数据结构为简单动态字符串(Simple Dynamic String,缩写 SDS)。是可以修改的字符串内部结构实现上类似于 Java 的 ArrayList采用预分配冗余空间的方式来减少内存的频繁分配 如图中所示内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度len。当字符串长度小于 1M 时扩容都是加倍现有的空间如果超过 1M扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M。
# set key value 添加键值对
# EX second 设置键的过期时间为 second 秒 SET key value EX second 效果等同于 SETEX key second value
# PX millisecond 设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value
# NX 只在键不存在时才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value
# XX 只在键已经存在时才对键进行设置操作
# get: 返回旧的值 同时设置新的值
# exat: 以秒为单位的unix时间戳作为过期时间
# pxat: 以豪秒为单位的unix时间戳作为过期时间
# keepttl :保留设置前指定健的生存时间 修改值的同时保留生存时间不覆盖
127.0.0.1:6379 set name ljy ex 10
127.0.0.1:6379 set name ljy px 100
127.0.0.1:6379 set name ljy nx
127.0.0.1:6379 set name ljy xx# get key 查询对应键值
127.0.0.1:6379 get name# append key value 将给定的value 追加到原值的末尾
127.0.0.1:6379 append name 18# strlen key 获得值的长度
127.0.0.1:6379 strlen name# setnx key value 只有在 key 不存在时 设置 key 的值
127.0.0.1:6379 setnx name lhx# incr key 只能对数字值操作 将 key 中储存的数字值增 1 如果为空新增值为 1
127.0.0.1:6379 incr age 1# decr key 只能对数字值操作 将 key 中储存的数字值减 1 如果为空新增值为-1
127.0.0.1:6379 dccr age 1# incrby key 步长 将 key 中储存的数字值增。自定义步长
127.0.0.1:6379 incrby age 10# decrby key 步长 将 key 中储存的数字值减。自定义步长
127.0.0.1:6379 decrby age 10# mset key1 value1 key2 value2 ... 同时设置一个或多个 key-value 对
127.0.0.1:6379 mset uname ljy age 20# mget key1 key2 key3 ..... 同时获取一个或多个 value
127.0.0.1:6379 mget uname age# msetnx key1 value1 key2 value2 ... 同时设置一个或多个 key-value 对当且仅当所有给定 key 都不存在
# 原子性有一个失败则都失败
127.0.0.1:6379 msetnx title boy age 20 num 100# getrange key 起始位置 结束位置 获得值的范围
127.0.0.1:6379 getrange name 0 2# setrange key 起始位置 value 用 value 覆写key所储存的字符串值从起始位置开始(索引从 0 开始)
# 替换指定位置开始的字符串参数有几个替换几个
127.0.0.1:6379 setrange name 2 boy # setex key 过期时间 value 设置键值的同时设置过期时间单位秒
# psetex key milliseconds value 设置key 并设置过期时间 单位豪秒
127.0.0.1:6379 setex key1 10 ljy
127.0.0.1:6379 psetex key1 1000 ljy# getset key value 先get到值然后再set他的值 以新换旧设置了新值同时获得旧值 设置新值并返回之前的旧值
127.0.0.1:6379 getset key1 name
3. List列表 主要特点单键多值
一个双端链表的结构,容量是2的32次方减1个元素大概40多亿主要功能有push/pop等一般用在栈、队列、消息队列等场景。left、right都可以插入添加
如果键不存在创建新的链表
如果键已存在新增内容
如果值全移除对应的键也就消失了
Redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边
列表底层实际是个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差 # lpush keyvalue1value2value3 .... 从左边插入一个或多个值
127.0.0.1:6379 lpush name lili leilei hanhan# rpush keyvalue1value2value3 .... 从右边插入一个或多个值
127.0.0.1:6379 rpush name ljy lhx# lpop key 从左边吐出一个值 值在键在值光键亡
127.0.0.1:6379 lpop name# rpop key 从右边吐出一个值 值在键在值光键亡
127.0.0.1:6379 rpop name# lrange key start stop 按照索引下标获得元素(从左到右) 0 左边第一个-1 右边第一个0-1 表示获取所有
127.0.0.1:6379 lrange name 0 -1 # rpoplpush key1 key2 从key1列表右边吐出一个值插到key2列表左边
127.0.0.1:6379 rpoplpush name name2# lindex key index 按照索引下标获得元素(从左到右)
127.0.0.1:6379 lindex name 2# llen key 获得列表长度
127.0.0.1:6379 llen name# lrem key n value 从左边删除 n 个 等于value(从左到右)
127.0.0.1:6379 lrem name 1 lili# ltrim key start stop 对一个列表进行修剪(trim)就是说让列表只保留指定区间内的元素不在指定区间之内的元素都将被删除
# 下标 0 表示列表的第一个元素以 1 表示列表的第二个元素以此类推。 你也可以使用负数下标以 -1 表示列表的最后一个元素 -2 表示列表的倒数第二个元素以此类推
127.0.0.1:6379 ltrim name 1 -1# linsert key before value newvalue 在value的前面插入newvalue插入值
# linsert key after value newvalue 在value的后面插入newvalue插入值
127.0.0.1:6379 linsert name before lili other
127.0.0.1:6379 linsert name after lili new# lset key index value 将列表 key 下标为 index 的值替换成 value
127.0.0.1:6379 lset name 1 ppp
4.Set集合
Redis set 对外提供的功能与 list 类似 是一个列表的功能特殊之处在于 set 是可以自动排重的当你需要存储一个列表数据又不希望出现重复数据时set 是一个很好的选择并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口这个也是 list 所不能提供的。
单值多value且无重复
# sadd key value1 value2 将一个或多个 member 元素加入到集合 key 中已经存在的 member 元素将被忽略
127.0.0.1:6379 sadd name ljy lhx lzf# smembers key 取出该集合的所有值
127.0.0.1:6379 smembers name# sismember key value 判断集合key是否为含有该value值有 1没有 0
127.0.0.1:6379 sismember name ljy# scard key 返回该集合的元素个数
127.0.0.1:6379 scard name# srem key value1 value2 .... 删除集合中的某个元素
127.0.0.1:6379 srem name ljy # spop key [数字] 随机从该集合中吐出N个值 该值从集合中删除
127.0.0.1:6379 spop name 2# srandmember key n 随机从该集合中取出 n 个值。不会从集合中删除
127.0.0.1:6379 srandmember name 1# smove source destination value 把集合中一个值从一个集合移动到另一个集合
127.0.0.1:6379 smove name name2 ljy# sinter key1 key2 返回两个集合的交集元素 两个集合中都共有的元素
127.0.0.1:6379 sinter name name2 ljy# sunion key1 key2 返回两个集合的并集元素
127.0.0.1:6379 sunion name name2# sdiff key1 key2 返回两个集合的差集元素(key1中有key2中没有) 以第一个key为主 属于key1但是不属于key2的元素构成的集合
127.0.0.1:6379 sdiff name name2# sintercard numkeys key ...[limit] 返回结果的基数 由所有给定集合的交集产生的集合的基数
127.0.0.1:6379 sintercard 2 k1 k2
5. Hash
Redis hash 是一个键值对集合值也是field 和 value
Redis hash 是一个 string 类型的 field 和 value 的映射表hash 特别适合用于存储对象
# hset key field value 给key集合中的 field 键赋值 value
127.0.0.1:6379 hset info name ljy# hget key1 field 从key1集合field取出 value
127.0.0.1:6379 hget info name# hmset key1 field1 value1 field2 value2... 批量设置 hash 的值
127.0.0.1:6379 hmset info age 10 level 10# hmget key1 field1 field1 field1 ... 批量获取 hash 的值
127.0.0.1:6379 hmget info name age level# hgetall key1 获取全部的数据
127.0.0.1:6379 hgetall info# hdel key1 field1 删除hash指定key字段对应的value值也就消失了
127.0.0.1:6379 hdel info level# hlen key1 返回哈希表 key 中字段的数量
127.0.0.1:6379 hlen info# hexists key1 field 查看哈希表 key 中给定域 field 是否存在。
127.0.0.1:6379 hexists info name# hkeys key 列出该 hash 集合的所有 field
127.0.0.1:6379 hkeys info# hvals key列出该 hash 集合的所有 value
127.0.0.1:6379 hvals info# hincrby key field increment 为哈希表 key 中的域 field 的值加上增量 1 -1
# hincrbyfloat key field increment 为哈希表 key 中的域 field 的值加上增量小数
127.0.0.1:6379 hincrby info age 1# hsetnx key field value 将哈希表 key 中的域 field 的值设置为 value 当且仅当域field 不存在 存在报错
127.0.0.1:6379 hsetnx info name 555
6. 有序集合 Zset
Redis 有序集合 zset 与普通集合 set 非常相似是一个没有重复元素的字符串集合
不同之处是有序集合的每个成员都关联了一个评分score,这个评分score被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的但是评分可以是重复了
因为元素是有序的, 所以你也可以很快的根据评分score或者次序position来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表
# zadd key score1 value1 score2 value2… 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
127.0.0.1:6379 zadd info 200 name 300 age# zrange key start stop [WITHSCORES] 返回有序集 key 中下标在 start stop 之间的元素 带 WITHSCORES可以让分数一起和值返回到结果集
127.0.0.1:6379 zrange info 0 -1 # zrevrange salary 0 -1 # 从大到进行排序
127.0.0.1:6379 zrevrange info 0 -1 # zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列
127.0.0.1:6379 zrangebyscore info 100 200
127.0.0.1:6379 zrangebyscore info (100 200 #大于100 不包含100
# 显示全部 从小到大
127.0.0.1:6379 zrangebyscore info -inf inf # zrevrangebyscore key max min [withscores] [limit offset count] 同上改为从大到小排列
127.0.0.1:6379 zrevrangebyscore info 900 100# zcard key # 获取有序集合中的个数
127.0.0.1:6379 zcard info# zincrby key increment value 为元素的 score 加上增量
127.0.0.1:6379 zincrby info 200 age# zrem key value 删除该集合下指定值的元素
127.0.0.1:6379 zrem info age# zcount key min max 统计该集合分数区间内的元素个数 大于等于100且小于200
127.0.0.1:6379 zcount info 100 200# zrank key value 返回该值在集合中的排名从 0 开始 顺序
# zrevrank key value 返回该值在集合中的排名 倒序
127.0.0.1:6379 zrank info name
127.0.0.1:6379 zrevrank info name# zscore key value 返回对应元素的score
127.0.0.1:6379 zscore info name# ZMPOP numkeys key [key ...] MIN | MAX [COUNT count]从键名列表中的第一个非空排序集中弹出一个或多个元素它们是成员分数对
#当使用MIN修饰符时弹出的元素是第一个非空排序集中得分最低的元素。MAX修改器会弹出得分最高的元素numkeys 表示 key 的数量。
127.0.0.1:6379 zmpop 1 set1 min
7.Bitmap
位存储 由0和1状态表现的二进制位的bit数组
位图的本质是数组 底层数据结构是String
Bitmap支持的最大位数是2^32位它可以极大的节约存储空间使用512M内存就可以存储多达42.9亿的字节信息(2^324294967296)
使用场景用户签到、打卡等
# setbit key offset value 设置 Bitmaps 中某个偏移量的值0 或 1 offset:偏移量从 0 开始127.0.0.1:6379 setbit sign 0 1
(integer) 0127.0.0.1:6379 setbit sign 1 0
(integer) 0127.0.0.1:6379 setbit sign 2 0
(integer) 0127.0.0.1:6379 setbit sign 3 1
(integer) 0127.0.0.1:6379 setbit sign 4 1
(integer) 0127.0.0.1:6379 setbit sign 5 0
(integer) 0127.0.0.1:6379 setbit sign 6 0
(integer) 0# getbit key offset 获取 Bitmaps 中某个偏移量的值 从 0 开始算
127.0.0.1:6379 getbit sign 3
(integer) 1
127.0.0.1:6379 getbit sign 6
(integer) 0 # strlen 不是字符串长度而是占据几个字节 超过8位后自己按照8位一组一byte再扩容 统计字节数占用多少
127.0.0.1:6379 strlen sign# bitcount key [start end] ] 统计字符串从 start 字节到 end 字节比特值为 1 的数量
127.0.0.1:6379 bitcount sign 6# bitop and(or/not/xor) destkey [key…]
# bitop 是一个复合操作 它可以做多个 Bitmaps 的 and交集 、 or并集 、 not非 、 xor异或 操作并将结果保存在 destkey 中
8.HyperLogLog
Redis在2.8.9版本添加了HyperLogLog 结构。
HyperLogLog 是 Redis 提供的一种用于基数统计的数据结构它可以用来估算集合中不重复元素的数量。HyperLogLog 的优点是内存消耗固定且很小标准情况下为 12KB与集合中元素的数量无关适合处理大规模数据集。HyperLogLog 提供的结果是一个近似值标准误差为 0.81%。
使用场景包括但不限于
统计独立访客数UV。统计应用的日活跃用户数DAU或月活跃用户数MAU。统计用户搜索不同词条的数量。统计注册 IP 数量。
HyperLogLog 只能提供不精确的去重计数方案且不能返回集合中的元素本身。因此它适用于对精度要求不是非常高的场景而在需要精确计数时可能需要考虑其他数据结构或方法
# pfadd key element [element ...] 添加指定元素到 HyperLogLog 中
127.0.0.1:6379 pfadd name redis# pfcountkey [key ...] 计算 HLL 的近似基数可以计算多个 HLL比如用 HLL 存储每天的 UV计算一周的 UV 可以使用 7 天的 UV 合并计算即可
127.0.0.1:6379 pfcount name# pfmerge destkey sourcekey [sourcekey ...] 将一个或多个 HLL 合并后的结果存储在另一个 HLL 中比如每月活跃用户可以使用每天的活跃用户来合并计算可得
127.0.0.1:6379 pfmerge name name2
9.Geospatial
Redis 的 Geospatial 功能是 Redis 3.2 版本引入的一种用于处理地理空间数据的数据类型。它允许用户存储地理位置信息并执行一些地理相关的操作如计算两个地点之间的距离、查找给定半径内的所有地点等。
Redis Geospatial 使用的是有序集合sorted sets来存储地理位置信息并通过 Geohash 编码来实现地理位置的索引和查询
# geoadd key longitude latitude member [longitude latitude member...] 添加地理位置经度纬度名称
# 规则两级无法直接添加我们一般会下载城市数据直接通过java程序一次性导入
# 有效的经度从-180度到180度。
# 有效的纬度从-85.05112878度到85.05112878度。
# 当坐标位置超出上述指定范围时该命令将会返回一个错误。
# redis-cli --raw 解决乱码
127.0.0.1:6379 geoadd china:city 121.47 31.23 shanghai
127.0.0.1:6379 geoadd china:city 114.05 22.52 shenzhen 116.38 39.90 beijing# geopos key member [member...] 获得指定地区的坐标值
127.0.0.1:6379 geopos china:city beijing# geodist key member1 member2 [m|km|ft|mi ] 获取两个位置之间的直线距离
# 单位
# m 表示单位为米[默认值]。
# km 表示单位为千米。
# mi 表示单位为英里。
# ft 表示单位为英尺。
# 如果用户没有显式地指定单位参数 那么GEODIST 默认使用米作为单位
127.0.0.1:6379 geodist china:city beijing shanghai km# georadius key longitude latitude radius m|km|ft|mi 以给定的经纬度为中心找出某一半径内的元素
# WITHDIST: 在返回位置元素的同时 将位置元素与中心之间的距离也一并返回
# WITHCOORD: 将位置元素的经度和维度也一并返回。
# WITHHASH: 以 52 位有符号整数的形式 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试 实际中的作用并不大
# COUNT 限定返回的记录数
# ASC: 查找结果根据距离从近到远排序
# DESC: 查找结果根据从远到近排序
127.0.0.1:6379 GEORADIUS china:city 110 30 1000 km# georadiusbymember 根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合
# georadiusbymember与georadius用法类似,只不过把参数经纬度改成了存在key里的member成员而已
127.0.0.1:6379 georadiusbymember china:city chengdu 300 km# geohash 返回一个或多个位置对象的 geohash 值该命令将返回11个字符的Geohash字符串!
# 将二维的经纬度转换为一维的字符串如果两个字符串越接近那么则距离越近
127.0.0.1:6379 geohash china:city beijing chongqi
1) wx4fbxxfke0
2) wm5xzrybty0