REDIS有5大数据结构:string,link,sortedset,sets,hash。 这5个结构我将用5篇文章来记录各自是怎么用的,然后再用一篇文章来说一下各自的应用场景;

更多语法请参考:

http://doc.redisfans.com/

string

set key value [ex 秒数] / [px 毫秒数]  [nx] /[xx]
set a 1 ex 10 , 10秒有效
Set a 1 px 9000 , 9秒有效

将key和value对应。如果key已经存在了,它会被覆盖,而不管它是什么类型。

注: 如果ex,px同时写,以后面的有效期为准

set a 1 ex 100 px 9000, 实际有效期是9000毫秒(9秒)

nx: 表示key不存在时,执行操作

xx: 表示key存在时,执行操作

mset multi set
mset key1 v1 key2 v2 ....

一次性设置多个键值

删除一个key并返回key的数量

del key
# Example
redis> SET key2 "World"
OK
redis> DEL key1 key2 key3
(integer) 2
redis>

rename oldkey newskey

将key重命名为newkey,如果key与newkey相同,将返回一个错误。如果newkey已经存在,则值将被覆盖。

renamenx oldkey newskey

nx -> not exits 当且仅当 newkey 不存在时,将 key 改名为 newkey 。当 key 不存在时,返回一个错误。

setrange key offset value
redis 127.0.0.1:6379> set greet hello
OK
redis 127.0.0.1:6379> setrange greet 2 x
(integer) 5
redis 127.0.0.1:6379> get greet
"hexlo" # 如果偏移量>字符长度, 该字符自动补0\x00
redis 127.0.0.1:6379> setrange greet 6 !
(integer) 7
redis 127.0.0.1:6379> get greet
"heyyo\x00!"

作用: 把字符串的offset偏移字节,改成value

append key value

作用: 把value追加到key的原值上

getset key newvalue
redis 127.0.0.1:6379> set cnt 0
OK
redis 127.0.0.1:6379> getset cnt 1
"0"
redis 127.0.0.1:6379> getset cnt 2
"1"

作用:设置新值并返回旧值

incr key

作用: 指定的key的值加1,并返回加1后的值

  1. 不存在的key当成0,再incr操作
  2. 范围为64有符号

incrby key number
redis 127.0.0.1:6379> incrby age 90
(integer) 92

作用: key每次递增number,但仅限于整数

incrbyfloat key floatnumber
redis 127.0.0.1:6379> incrbyfloat age 3.5
"95.5"

作用: key每次递增floatnumber,但仅限于整数

decr key
redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age
(integer) 19
decrby key number
redis 127.0.0.1:6379> decrby age 3
(integer) 16
setbit key offset value
redis 127.0.0.1:6379> set char A
OK redis 127.0.0.1:6379> setbit char 2 1 #大写字母转换成小写字母;
#大写字母和小写字母在ascii表中的区别: A:0100 0001 a:0110 0001 B:0100 0010 b:0110 0010 差异:在第二位0和1的差别;

作用: 设置offset对应二进制位上的值

返回: 该位上的旧值

注意:

1:如果offset过大,则会在中间填充0,

2:offset最大大到多少

3:offset最大2^32-1,可推出最大的的字符串为512M

bitop operation destkey key1 [key2 ...]

对key1,key2..keyN进行operation位元操作,并将结果保存到 destkey 上。

operation 可以是 AND 、 OR 、 NOT 、 XOR的任意一种:

  1. BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
  2. BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
  3. BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
  4. BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey 。
redis 127.0.0.1:6379> setbit lower 7 0 # 00000000 空字符
(integer) 0
redis 127.0.0.1:6379> setbit lower 2 1 #00100000 空格
(integer) 0
redis 127.0.0.1:6379> get lower
" "
redis 127.0.0.1:6379> set char Q
OK
redis 127.0.0.1:6379> get char #01010001
"Q"
redis 127.0.0.1:6379> bitop or char char lower #求逻辑或 #01010001 #00100000 #01110001
(integer) 1
redis 127.0.0.1:6379> get char #01110001
"q" # 注意: 对于NOT操作, key不能多个

GET key

返回key的value。如果key不存在,返回特殊值nil。如果key的value不是string,就返回错误,因为GET只处理string类型的values。

KEYS pattern

查找所有符合给定模式 pattern 的 key 。

  • KEYS * 匹配数据库中所有 key 。
  • KEYS h?llo 通配单个字符 如 hello , hallo 和 hxllo 等。
  • KEYS h*llo 通配任意多个字符(包括没有) 如hllo 和 heeeeello 等。
  • KEYS h[ae]llo 通配括号内的某1个字符 如hello 和 hallo ,但不匹配 hillo 。

特殊符号用 \ 隔开。

randomkey

从当前数据库返回一个随机的key。

type key

返回 key 所储存的值的类型。

exists key

返回key是否存在。如果存在返回1,不存在就返回0

mget key1 key2 ..keyn

一次性获取多个建

getrange key start stop
redis 127.0.0.1:6379> set title 'chinese'
OK
redis 127.0.0.1:6379> getrange title 0 3
"chin"
redis 127.0.0.1:6379> getrange title 1 -2
"hines"

作用: 是获取字符串中 [start, stop]范围的值

注意: 对于字符串的下标,左数从0开始,右数从-1开始

  1. start>=length, 则返回空字符串
  2. stop>=length,则截取至字符结尾
  3. 如果start 所处位置在stop右边, 返回空字符串

getbit key offset
redis 127.0.0.1:6379> set char A
OK
redis 127.0.0.1:6379> getbit char 1
(integer) 1
redis 127.0.0.1:6379> getbit char 2
(integer) 0
redis 127.0.0.1:6379> getbit char 7
(integer) 1

作用: 获取值的二进制表示,对应位上的值(从左开始,从0编号)

关于二进制运算:

AND: 与运算,逻辑乘  0x0=0    0x1=1x0=0  1x1=1

OR:	 或运算,逻辑加 0+0=0   0+1=1+0=1   1+1=1

NOT: 逻辑非		非1=0  非0=1

XOR: 0异或0=0 0异或1=1 1异或0=1 1异或1=0

【redis专题(2)】命令语法介绍之string的更多相关文章

  1. 【redis专题(8)】命令语法介绍之通用KEY

    select num 数据库选择 默认有16[0到15]个数据库,默认自动选择0号数据库 move key num 移动key到num服务器 del key [key ...] 删除给定的一个或多个 ...

  2. 【redis专题(7)】命令语法介绍之Pub/Sub

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似.p ...

  3. 【redis专题(6)】命令语法介绍之hash

    可以把hash看做一个数组hset array key1 value2;,该数据类型特别适用于存储 增 hset key field value 作用: 把key中filed域的值设为value 注: ...

  4. 【redis专题(5)】命令语法介绍之sets

    标签(空格分隔): Redis 关于 redis的无序集合有三个特点: 无序性, 确定性(描述准确) , 唯一性: 有点类似于数据容器: 增 SADD key member1 [member2] 作用 ...

  5. 【redis专题(4)】命令语法介绍之sorted_set

    有序集合可以模拟优先级队列的实现 增 zadd key score1 value1 score2 value2 .. redis 127.0.0.1:6379> zadd stu 18 lily ...

  6. 【redis专题(3)】命令语法介绍之link

    通过链表结构可以模仿队列结构与堆栈结构:关于队列结构和堆栈结构可以查看https://www.zybuluo.com/a5635268/note/290475 增 lpush key value1 v ...

  7. redis学习笔记01 — 基本介绍、安装配置及常用命令

    redis--NoSQL的一种 为了解决高并发.高可用.高扩展.大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系 ...

  8. redis系列:通过日志案例学习string命令

    前言 该文章将通过一个小demo将讲述Redis中的string类型命令.demo将以springboot为后台框架快速开发,iview前端框架进行简单的页面设计,为了方便就不使用DB存储数据了,直接 ...

  9. 四、Redis通配符介绍、命令缩写介绍和后面内容介绍讲解。

    1.通配符介绍 ? 匹配一个字符 * 匹配任意个(包括 0 个)字符 [] 匹配括号间任一字符,可以使用 "-" 符号表示一个范围,如 a[b-d]匹配 "ab" ...

随机推荐

  1. eclipse 安装插件报错问题

    报错信息 An error occurred while installing the items session context was:(profile=epp.package.jee, phas ...

  2. Python日常实践(1)——SQL Prompt的Snippets批量整理

    引言 个人平时在写sql脚本的时候会使用到SQL Prompt这款插件,除了强大的智能提示和格式化sql语句功能,我还喜欢使用Snippets代码段功能.比如我们可以在查下分析器输入ssf后按Tab键 ...

  3. 第八章:四大组件之Content Provider

    前言 Content Provider——Android四大组件之一. 本文要点 1.Content Provider简介 2.URI简介 3.如何访问Content Provider中数据 一.Co ...

  4. .NET 线程池编程技术

    摘要 深度探索 Microsoft .NET提供的线程池, 揭示什么情况下你需要用线程池以及 .NET框架下的线程池是如何实现的,并告诉你如何去使用线程池. 内容 介绍 .NET中的线程池 线程池中执 ...

  5. Nunit测试工具使用

    Nunit是什么 Nunit是一种TDD工具,和Junit一样的! 怎么样获取Nunit 打开Visual Studio工具,然后在菜单栏中的工具->扩展管理器中的联机库中搜索"nun ...

  6. [SPOJ22343] Norma

    Description 现在有一个长度为\(N(N\leq 500000)\)的序列,定义区间\([l,r]\)的价值为\([l,r]\)的最小值乘上\([l,r]\)的最大值乘上\([l,r]\)的 ...

  7. rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

  8. MySQL之库、表操作

    一.库操作 创建库 create database 库名(charset utf8 对库的编码进行设置,不写就用默认值) 库名可以由字母.数字.下划线.特殊字符,要区分大小写,唯一性,不能使用关键字, ...

  9. C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)

    做过单元测试的同学大概都知道以上几种测试框架,但我一直很好奇它们到底有什么不同,然后搜到了一篇不错的文章清楚地解释了这几种框架的最大不同之处. 地址在这里:http://www.tuicool.com ...

  10. 在整合spring和mongodb中,提示at org.springframework.data.mapping.model.BasicPersistentEntity.findAnnotation(

    遇到这种坑,找了好多资料.基本是都是因为springdata的jar包和spring的版本不兼容导致,除了这个错误之外,还有会比较多其他错误,也是版本不兼容导致的. at org.springfram ...