深入了解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 查看所有 ...
随机推荐
- ASP.NET 中 取得 Repeater 里的checkbox值
前言:这两天在维护ASP.NET的项目,需要做一个checkbox来选择数据进行导出,下面提供两种解决思路 1.ASP:CheckBox asp:CheckBox自带控件,没有Value值 <a ...
- Spring MVC文件上传下载(转载)
原文地址: http://www.cnblogs.com/WJ-163/p/6269409.html 上传参考 http://www.cnblogs.com/lonecloud/p/5990060.h ...
- java数据结构--array与ArrayList的区别
ArrayList 内部是由一个array 实现的. 如果你知道array 和 ArrayList 的相似点和不同点,就可以选择什么时候用array 或者使用ArrayList , array 提供 ...
- 设计模式Design Pattern(4) -- 访问者模式
什么是访问者模式? 一个对象有稳定的数据结构,却为不同的访问者提供不同的数据操作,对象提供接收访问者的方法,从而保证数据结构的稳定性和操作的多样性.也可以理解为,封装对象的操作方法,达到不改变对象数据 ...
- ubuntu 7z解压
安装方法: sudo apt-get install p7zip 解压文件: 7z x manager.7z -r -o /home/xx 解释如下: x 代表解压缩文件,并且是按原始 ...
- codevs 5971 打击犯罪 x
题目描述 Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接 ...
- Shell中的特殊字符(三)
一 通配符 [root@192 test]# touch abc [root@192 test]# touch abcd [root@192 test]# touch 012 [root@192 te ...
- 湖南省第十二届省赛:Parenthesis
Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n and q questions. The i-t ...
- 2.Python环境搭建Window、mac、linux
1.Windows安装Python详解 使用任何高级编程语言都需要有一个自己的编程环境,Python 也不例外.只要使用 Python,就必须要配置 Python 的开发和运行环境. Python 本 ...
- php的数组
Array 数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种 ...