深入了解redis字符串,列表,散列和有序集合命令,了解发布,订阅命令和其他命令。
一,字符串
1.字符串可以存储3种类型的值
字符串,整数,浮点数
2.运算命令列表
incr : incr key-name ---将键存储的值加上1
decr: decr key-name ----将键存储的值减去1
incrby: incrby key-name amount ---将键存储的值加上整数amount
decrby : decrby key-name amount ----将键存储的值减去整数amount
incrbyfloat: incrbyfloat key-name amount ---将键存储的值加上浮点数amount。
注:如果键的存储值不能解释为十进制整数或浮点数,那么redis会返回一个错误,如果用户对一个不存在的键或者一个保存了空串的键执行自增或者自减操作,会把这个值当做0处理。
3.处理子串命令列表
append :append key-name value ---将值value追加到给定键key-name当前存储值得后面。
getrange: getrange key-name start end -- 获取一个由偏移量start至偏移量end范围内所有字符组成的子串,包括start和end在内。
setrange: setrange key-name offset value -- 将从start偏移量开始的子串设置给定值
getbit: getbit key-name offset --将字符串看作是二进制位串,并返回位串中偏移量为offset的二进制的值
setbit: setbit key-name offset value --将字节串看作成一个二进制位串,并将位串中偏移量为offset的二进制位的值设置为value
bitcount: bitcount key-name [start end] -- 统计二进制位串里面值为1的二进制的数量,如果给定了start偏移量和end的偏移量,那么只对偏移量范围内的二进制进行统计。
bitop : bitop opration dest-key key-name [key-name ...] 一对一个或多个二进制位串执行包括并(and),或(or),异或(xor),非(not) 在内的任意一种按位运算操作,并将计算得出的结果保存在dest-key键里面。
二,列表list<String>
1.常用的列表命令
rpush: rpush key-name value [value...] 将一个或多个值推入列表的右端
lpush: lpush key-name value[value...] 将一个或多个值推入列表的左端
rpop : rpop key-name 移除并返回列表最右端的元素
lpop : lpop key-name 移除并返回列表最左端的元素
lindex: lindex key-name offset 返回列表中偏移量为offset的元素。
lrange: lindex key-name start ned -- 返回列表从start偏移量到end偏移量范围内的所有元素,其中偏移量为start和偏移量end的元素也会包含在返回的元素之内。
ltrim ltrim key-name start end -- 对列表进行修剪,只保留从start偏移量到end偏移量范围内的元素,其中包含start和end偏移量的值。
阻塞式的列表命令
blpop: blpop key-name [key-name ...] timeout --从第一个非空列表中弹出位置最左端的元素或者在timeout 秒之内阻塞并等待可弹出的元素出现。
brpop :brpop key-name [key-name...] timeout --- 从第一个非空列表中弹出最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现。
rpoppush rpoppush source-key dest-key -- 从source-key列表中弹出位置最右端的元素,然后将这个元素推入dest-key 列表的最左端,并向用户返回这个元素,如果source-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现。
三。集合set<String>
1.常用的命令
add : add key-name item[item...] 将一个或多个元素添加到集合里面,并返回元素数量
srem: srem key-name item[item...] 从集合里面移除一个或多个元素,并返回被移除元素的数量。
sismember: sismember key-name time 检查元素item是否存在于集合key-name里
scard: scard key-name 返回集合包含的元素的数量。
smembers : smembers key-name 返回集合包含所有元素
srandmember: srandmember key-name[count] 从元素里面随机地返回一个或多个元素。当count为正数时,命令返回的随机数不会重复;让count为负数时,命令返回的随机元素可能会出现重复。
spop : spop key-name ---随机地移除集合中的一个元素,并返回被移除的元素。
smove: smove source-key dest-key item --- 如果集合source-key包含item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中,如果item被成功移除,那么返回1,否则0.
2.用于组合和处理多个集合
sdiff : sdiff key-name[key-name...] 返回那些存在于第一个集合,但不存在与其他集合中的元素
sdiffstore: sdiffstore dest-key key-name[key-name...] 将那些存在于第一个集合但并不存在与其他集合中的元素存储到dest-key键里面。
sinter: sinter key-name[key-name...] 返回那些同时存在于所有集合中的元素。
sinterstore: sinterstore dest-key key-name[key-name...] 将那些同时存在于所有集合中的元素存储在dest-key键里面。
sunion: sunion key-name [key-name...] 返回那些至少存在于一个集合中的元素。
sunionstore: sunionstore dest-key key-name[key-name...] 将那些至少存在于一个集合中的元素存储到dest-key键里面。
四。散列map<string,string>
1.用于添加和删除键值对的散列操作
hmget: hmget key-name key [key...] ---从散列里面获取一个或多个键的值。
hmset: hmset key-name key value[key value ...] ---为散列里面的一个或多个键设置值
hdel: hdel key-name key[key...] ---删除散列里面的一个或多个键值对,返回成功找到并删除的键值对数量。
hlen: hlen key-name ----返回散列包含的键值对数量。
2.散列的高级特性命令
hexists: hexists key-name key---检查给定的键是否存在散列中
hkeys: hkeys key-name ---获取散列包含的所有键
hvals: hvals key-name --获取散列包含的所有值
hgetall: hgetall key-name--获取散列包含的所有键值对
hincrby: hincrby key-name key increment --将键key存储的值加上整数increment
hincrbyfloat: hincrbyfloat key-name key increment --将键key存储的值加上浮点数increment.
五,有序集合treeSet<String> 有点不同,数据结构为key-value 先按key的整数值排序,再按照value按照字母大小排序
1.常用的命令
zadd: zadd key-name score member [sorce member] 将带有给定分值的成员添加到有序集合里面
zrem: zrem key-name memberp[member] 从一个有序集合里面移除给定的成员,并返回被移除成员的数量。
zcard: zcard key-name 返回有序集合包含的成员数量。
zincrby: zincrby key-name increment member --将member成员的分值加上increment
zcount: zcount key-name min max 返回分值介于min和max之间的成员数量。
zrank: zrank key-name member 返回成员member在有序集合中的排名。
zscore: zscore key-name member 返回成员member的分值。
zrange: zrange key-name start stop [withscores] 返回有序集合中排名介于start和stop之间的成员,如果给定了可选的withscores选项,那么命令会将成员的分值也一并返回
2.有序集合的范围型数据获取命令和范围型删除命令
zrevrank : zrevrank key-name member 返回有序集合里成员member的排名,成员按照分值从大到小排列。
zrevrange: zrevrange key-name start stop [withscores] 返回有序集合给定安排排名范围内的成员,成员按照分值从大到小排列。
zrangebyscore: zrangebyscore key min max [withscores] [limit offset count] 返回有序集合中,分值介于min 和max之间的所有成员。
zrevrangebyscore : zrevrangebuscore key max min [withscore][limit offset count] 获取有序集合中分值介于min和max之间的所有成员,并按照分值从大到小的顺序返回它们。
zremrangebyrank zremrangerank key-name start stop 移除有序集合中排名介于start和stop之间的成员
zremrangebyscore: zremrangebyscore key-name min max -- 移除有序集合中分值介于min和max之间的所有成员
zinterstore zinterstore dest-key key-count key [key...] [weights weight[weight...]][aggregate sum|min|max] -- 对给定的有序集合执行类似于集合机交集运算
zunionstore zinterstore dest-key key-count key [key...] [weights weight[weight...]][aggregate sum|min|max] -- 对给定的有序集合执行类似于集合机并集运算
六,发布和订阅
subscribe : subscribe channel [channel...] 订阅给定的一个或多个频道
unsubscribe: unsubscribe channel[channel...] 退订给定的一个或多个频道,如果没有指定频道,将退订所有频道。
publish : publish channel message 向给定频道发送消息。
psubscribe: psubscribe pattern[pattern...] 订阅与给定模式相匹配的所有频道
punsubscribe: punsubscribe pattern[pattern...] 退订指定模式,如果没有指定,则退订所有模式
七。排序
sort 对所有的数据结构有效。 安装指定规则排序
sort source-key [by pattern] [limit offset count][get pattern [pattern]][asc|desc][alphy][store dest-key]
八。基本的redis事务
有时候,我们需要向redis发送多个命令,为了不被打断的情况下对多个键执行操作,可以使用watch exec multi UNwatch discard
用法:
将需要发送的命令包在以multi开头 最后以exec结束,这样命令会一个接一个执行,直到执行所有命令完毕之后,redis才会处理其他客户端的命令。
九, 键的过期时间命令
persist : persist key-name 移除键的过期时间
ttl : ttl key-name 查看给定键距离过期还有多少秒
expire:expire key-name seconds 让给定键在指定秒数过期
expireat: expireat key-name timestamp 将给定键的过期时间设置为给定的unix时间戳
pttl : pttl key-name 查看给定键距离过期时间还有多少毫秒
pexpire: pexpire key-name milliseconds 让给定键在指定的毫秒数之后过期
pexpireat: pexpireat key-name timestamp-milliseconds 将一个毫秒级精度的unix时间戳设置为给定键的过期时间。
总结:redsi还有很命令, 这些命令是redis最重要的命令,掌握这些命令其实就差不多了。
- Redis 学习(二) —— 数据类型及操作
Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...
- Redis学习二:Redis入门介绍
一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内 ...
- C#中使用Redis学习二 在.NET4.5中使用redis hash操作
上一篇>> 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表. ...
- Redis学习二:Redis高并发之主从模式
申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 前面已经学习了Redis的持久化方式,接下来开始学习Redi ...
- Redis学习二 C#中如何进行这五种数据类型的操作
我在网上找了好久,就是没有找到Redis和C#结合的书,都是和别的编程语言在一起鬼混. 简单的用C#实现向Redis中插入那我中类型的数据 首先需要到NuGet 里面下载 Redis IDatabas ...
- php+redis 学习 二 悲观锁
<?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 实现悲观锁机制 * */ $timeout = 5 ...
- redis学习二 排序
文章转载自:http://www.cnblogs.com/redcreen/archive/2011/02/15/1955226.html redis支持对list,set和sorted set元素的 ...
- 【转】C#中使用Redis学习二 在.NET4.5中使用redis hash操作
摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴 ...
- Redis学习二(数据操作).
key 操作 删除 key:del key 批量删除key:redis-cli -a(密码)keys "QXJ_*"| xargs redis-cli -a(密码)del 查看所有 ...
随机推荐
- solaris11 format zpool
# format AVAILABLE DISK SELECTIONS:0. c1t0d0 <LSI-MR9261-8i-2.12-557.86GB>/pci@0,0/pci8086,3c0 ...
- STM32Cube IDE 汉字字体变小解决办法
用STM32Cube IDE自动生成的工程,如果用汉字注释的话,字体会变小,如下图: 解决方法:选中变小的汉字->右击选择Preferences,如下图: 在弹出的对话框中可以看出默认的字体是C ...
- Collections 工具类和 Arrays 工具类常见方法
Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void revers ...
- 【NOIP2016提高A组模拟8.15】Password
题目 分析 首先我们知道,原A序列其实表示一个矩阵,而这个矩阵的对角线上的数字就是答案B序列. 接着\(a.b>=gcd(a,b)\),所以序列A中的最大的数就是ans[1],第二大的数就是an ...
- python-套接字编程之tcp
服务端和客户端. 服务端脚本: # Auther:AlphaPanda # Description:server # Version:1 # Date:Mon Dec 2 09:02:01 EST 2 ...
- Python 爬虫十六式 - 第七式:正则的艺术
RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽 Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...
- codevs 5935 小球 x
题目描述 Description 许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树),每一时间,一个正在下降的球第一个访问的是非叶子节点.然后继续下降时 ...
- 【Leetcode】二分法
题目: 在排序数组中查找元素的第一个和最后一个位置. 二分法的思想非常简单,然而其中的实现细节非常繁琐,容易出错.本推文非常详细地介绍二分法的实现细节. 总结几点注意事项: 初始上.下界的取值: 判断 ...
- 花式求LCA
设树上有两点x.y,要求他们的lca(最近公共祖先) 1.倍增求LCA: 先预处理出树上每个点的向上2^k的祖先. 再看x.y:先把深度深的倍增跳到和深度浅的一样的深度,判断是否在同一点:是,该点即为 ...
- (51)LINUX应用编程和网络编程之六Linux高级IO
3.6.1.非阻塞IO 3.6.1.1.阻塞与非阻塞 阻塞:阻塞具有很多优势(是linux系统的默认设置),单路IO的时候使用阻塞式IO没有降低CPU的性能 补充:阻塞/非阻塞, 它们是程序在等待消息 ...