C# CsRedis的初探(二)

Stella981
• 阅读 661

Redis常用命令基本篇

keys 命令

        ?    匹配一个字符 

KEYS h?llo 匹配 hello ,  hallo 和 hxllo 等。

        *    匹配任意个(包括0个)字符

KEYS h*llo 匹配 hllo 和 heeeeello 等。

        []    匹配括号间的任一个字符,可以使用 "-" 符号表示一个范围,如 a[b-d] 可以匹配 "ab","ac","ad"

KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。

        \x    匹配字符x,用于转义符号,如果要匹配 "?" 就需要使用 \?


判断一个键值是否存在

exists key

        如果存在,返回整数类型 1 ,否则返回 0


删除键

del key [key.....]

        可以删除一个或多个键,返回值是删除的键的个数

        注意:不支持通配符删除


获得键值的数据类型

type key

        返回值可能是 string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型)


赋值与取值

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 key                取值

  • 当 key 不存在时,返回 nil ,否则,返回 key 的值。

    如果 key 不是字符串类型,那么返回一个错误。


递增数字

incr key

        当存储的字符串是整数形式时,redis提供了一个使用的命令 incr 作用是让当前的键值递增,并返回递增后的值

        当要操作的键不存在时会默认键值为 0  ,所以第一次递增后的结果是 1 ,当键值不是整数时 redis会提示错误


增加指定的整数

incrby key increment

         incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值如:

            incrby num 2

            incrby num 3


减少指定的整数

decr key

decrby key increment

        desc 命令与incr 命令用法相同,只不过是让键值递减

        decrby 命令与 incrby命令用法相同


增加指定浮点数

incrbyfloat key increment

        incrbyfloat 命令类似 incrby 命令,差别是前者可以递增一个双精度浮点数,如:

        incrbyfloat num 2.7


向尾部追加值

append key value

        作用是向键值的末尾追加 value ,如果键不存在则将改键的值设置为 value,即相当于 set key value。返回值是追加后字符串的长度

        如:append foo " hello word!"


获取字符串长度

strlen key

        返回键值的长度,如果键不存在则返回0


同时 获得/设置 多个键值

mget key [key.....]

        如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

mset key value [key value .......]

         如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。


位操作

一个字节由8个二进制位组成,redis 提供了4个命令直接对二进制位进行操作

getbit key offset

         getbit 命令可以获得一个字符串类型键指定位置的二进制位的值(0 或 1),索引从 0 开始,如果需要获取的二进制位的索引超出了键值的二进制位的实际长度则默认位值是 0

setbit key offset value

         setbit 命令可以设置字符串类型键指定位置的二进制位的值,返回值是该位置的旧值,如果需要设置的位置超过了键值的二进制位的长度,setbit 命令会自动将中间的二进制位设置为0,同理设置一个不存在的键的指定二进制位的值会自动将其前面的位赋值为 0

bitcount key [strart] [end]

         bitcount 命令可以获得字符串类型键中值是1的二进制位个数,可以通过参数来限制统计的字节范围,如我们希望统计前两个字节(即"aa")  命令:bitcount foo 0 1  

bitop operation destkey key [key .....]

        bittop 命令可以对多个字符串类型键进行位运算,并将结果存储在destkey参数指定的键中。该命令支持的运算操作有 AND、 OR、XOR、 NOT,

            如我们对bar 和 aar 进行 OR 运算操作: 

            set foo1 bar

            set foo2 aar

            bitop OR res foo1 foo2

            get res


-END-

长按下方二维码关注微卡智享

C# CsRedis的初探(二)

本文分享自微信公众号 - 微卡智享(VaccaeShare)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这