- ❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者
- 🐟 个人主页 :https://blog.csdn.net/qq_52007481
- ⭐ 个人社区:【小鱼干爱编程】
文章目录
| 命令 | 作用 |
|---|---|
| keys * | 查看当前库所有key |
| exists key | 判断某个键是否存在 |
| type key | 查看key地数据类型 |
| del key | 删除指定地key |
| unlike key | 根据value选择非阻塞删除 仅将keys从keyspace元数据中删除,真正地删除会在后续异步操作 |
| expire key 10 | 设置key地存活时间,单位秒 |
| ttl key | 查看还有多少秒过期,-1表示用不过期,-2表示已过期 |
| set key value | 添加键值对 |
| 命令 | 作用 |
|---|---|
| select 1 | 切换到数据库1 |
| dbsize | 查看当前数据库地key |
| flushdb | 清空当前库 |
| flushall | 通杀全部库 |
redis一共有16个数据库,默认使用的是0号数据库
String是redis最基本的数据类型,
String类型是二进制安全的,Redis的string可以包含任何数据,如图片。序列化的对象
String 类型是Redis最基本的数据类型,一个Redis中字符value最多可以是512M
set key value 添加键值对
# 清空数据库
flushdb
# 查看数据库中的键
keys *
#添加新数据
set k1 100
set k2 200
set k3 300

get key 取值
get k1
append key value 在原有得值后面追加新的内容
# 在键为text的值的后面添加world
append text world

setnx key value 只有在键不存在的时候可以设置值,能够避免覆盖的情况

incr key 对于整数,会自增1
decr key 对于整数 会减1
对k1自增或者自减

设置自增或自减步长
incrby key increment
decrby key increment
# 设置k1的值自增100
incrby k1 100
mset key1 value1 key2 value2 ... 同时设置多个键值对
mget key1 key2 ... 同时获取多个键值对

同时设置多个数据库中不存在的键值对,如果其中一个键存在,则所有的内容都不会被创建成功
msetnx key1 value1 key2 value2 …

strlen key 获取字符串的长度

getrange key start end 遍历输出
getrange name 0 -1
获取第一个字符第3个字符
getrange name 0 2
setrange key 开始位置 value 用新的值覆盖旧值

setex key 过期时间 value 设置值得同时设置过期时间,单位为秒
# 过期时间20秒 值为v1
setex k5 20 v1
获取旧得值填充新的值
getset key value
getset k1 33

String的数据结构为简单动态字符串(Simple Dynamic String)是可以修改的字符串,内部的实现结构和python中的list类似,都是先预先分配一些空间,当空间不够用会自动扩充空间的大小,最大长度为512M
Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加应给元素到表头或者尾
它的底部实际是个双向链表,对两端的操作性性能很高,通过索引下标的操作中间节点的性能较差。
lpush/rpush key value1 value2 value3 从左边/右边插入一个或者多个值lpop/rpop key 从左边/右边弹出一个值 值在键在,键光键亡rpoplpush key1 key2 从key1列表右边弹出一个值,插入到key2列表的左边lrange key start stop 按照索引下标获得元素(从左到右)代码演示



lindex key index 按照索引下标获得元素
llen key 获取列表的长度

linsert key before value newvalue 在value的前面插入newvalue
在3的前面插入99
linsert k1 before 3 99

在99的后面插入55
linsert k1 after 99 55

lrem key n value 从左边删除n个value(删除重复值)删除k4列表中左面3个2
lpush k4 1 2 2 3 2 1 5 2
lrem k4 3 2
lrange k4 0 -1

lset key index value 将列表key下标为index的值替换成valuelpush k5 1 2 3 4 5
# 将索引为2的值替换成22
lset k5 2 22
# 将索引为3的值替换成44
lset k5 3 44

list的数据结构是快速链表
首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist压缩列表,所有的元素在一块连续的内存空间
元素较多时,才会改成quicklist,
quicklist是将多个ziplist用双向链表的形式链接起来的数据结构
是一个无序不重复的序列,集合成员是唯一的
操作类似于list
底层是一个value为null的hash表,添加,删除,查找的复杂度都是O(1)
sadd key value1 value2 ... 将元素添加到集合key中,如果新添加的元素已经在集合中存在,则会被忽略# 向s1集合中添加元素
sadd s1 1 2 3 4 4 4
smembers key 取出该集合的所有值# 查看s1中的集合
smembers s1

sismember key value 判断集合中是否存在该值 有返回1 没有返回0sadd s2 1 2 3 4 5
sismember s2 2 # 返回1
sismember s2 6 # 返回0
scard key 返回集合的个数scard s2

srem key value1 value2 ... 删除集合中的某些元素sadd s3 1 2 3 4 5 6 7 8
srem s3 3 4 7 # 删除成功
srem s3 3 # 当删除的元素不存在时,返回0,不会报错
spop key [count] 随机弹出一个元素,或者多个元素spop s3 # 随机弹出一个元素
spop s3 2 # 随机弹出2个元素
srandmember key [count] 随机从该集合中取出n个值,不会从集合中删除,默认n为1,当n大于集合的长度时,返回集合中的所有元素srandmember s3 # 随机取出一个值
srandmember s3 2 # 随机取出2个值
smove source destination value 将一个值从一个集合移动到另一个集合sadd s4 1 2 3
sadd s5 6 7 8
# s4中的2移动到s5中
smove s4 s5 2
redis中的集合和数学中的集合一样也有交集并集差集的计算方式
sinter key1 key2 返回两个集合的交集
sunion key1 key2 返回两个集合的并集
sdiff key1 key2 返回两个集合的差集
实例

集合的数据结构dict字典,字典是使用哈希表实现的,所有的的value值都指向同一个外部值
Redis hash 是一个键值对集合,是string类型和field和value的映射表,hash适合存储对象

hset key field value 将哈希表 key 中的字段 field 的值设为 value 。hget key field 获取在哈希表中指定 key 的所有字段和值hmset key field1 value1 field2 value2同时将多个 field-value (域-值)对设置到哈希表 key 中。hmget key field1 field2 获取所有给定字段的值hexists key filed 查看哈希表 key 中,指定的字段是否存在。hkeys key 获取所有哈希表中的字段hvals key 获取哈希表中所有值。hsetnx key field value 只有在字段 field 不存在时,设置哈希表字段的值。hincrby key field increment 为哈希表 key 中的指定字段的整数值加上增量 incrementhincrbyfloat key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment 。hdel key field1 [field2] 删除一个或多个哈希表字段Hash类型对应的数据结构是两种,ziplist(压缩列表),hashtable(哈希表)
field-value长度短且个数较少时,使用的是ziplist,否则使用的是hashtable
有序集合和普通集合非常相似,都是没有重复元素的序列,区别在于,有序集合的每一个元素都关联了一个评分(score) 这个评分被用来按照最低分到最高分的方式排序有序集合中的元素,
注意:集合中的元素是不可重复的,但是评分可以重复
zadd key key score1 value1 score2 value2 ... 将一个或者多个member元素以及score值加入到有序集合中
zrange key start stop 返回有序集合key中下标在start stop之间的元素,添加参数 withscores,连同分数和值返回到结果集
zrangebyscore key min max 返回有序集合中所有score 值介于min 和max之间包括min和max的成员 返回的结果是按score从小到大
zrevrangebyscore key min max 返回有序集合中所有score 值介于min 和max之间包括min和max的成员 返回的结果是按score从大到小
zcard key 获取有序集合的成员数
zcount key min max 计算在有序集合中指定区间分数的成员数
zincrby key increment member 有序集合中对指定成员的分数加上增量 increment
zinterstore destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中
zlexcount key min max 在有序集合中计算指定字典区间内成员数量
zrank key member 返回有序集合中指定成员的索引
zrem key member [member ...] 移除有序集合中的一个或多个成员
zremrangebyscore key min max 移除有序集合中给定的分数区间的所有成员
zscore key member 返回有序集中,成员的分数值

我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit