环境
  虚拟机:VMware 10
  Linux版本:CentOS-6.5-x86_64
  客户端:Xshell4
  FTP:Xftp4
  jdk8
  redis-2.8.18

一、redis客户端基础命令
1、帮助命令

PCS103:> help
redis-cli 2.8.
  Type: "help @<group>" to get a list of commands in <group> #加@ 列出group组命令解释
      "help <command>" for help on <command> #查看单个命令解释
      "help <tab>" to get a list of possible help topics #补全命令
      "quit" to exit #退出

2、键
键(key)是二进制,空字符串是有效key值,不宜过长或过短。

2.1过期:给Key设置一个生存时间(秒或毫秒),当达到这个时长后,这些键值将会被自动删除
(1)设置多少秒后过期
EXPIRE key seconds
set key val ex 10

(2)设置多少毫秒后过期
PEXPIRE key milliseconds

(3)设置在指定Unix时间戳过期
EXPIREAT key timestamp
PEXPIREAT key milliseconds-timestamp

(4)删除过期
PERSIST key

2.2生存时间
Time To Live,Key的剩余生存时间

(1)查看剩余生存时间
TTL key 返回剩余的秒
PTTL key 返回剩余的毫秒
key存在但没有设置TTL,返回-1
key存在,但还在生存期内,返回剩余的秒或者毫秒
key曾经存在,但已经消亡,返回-2(2.8版本之前返回-1)

2.3查找键
KEYS pattern

pattern取值
* 任意长度字符
? 任意一个字符
[] 字符集合,表示可以是集合中的任意一个

2.4键类型
TYPE key 返回值数据类型
object encoding key 列出value值底层存储的数据结构类型

PCS103:> set k1 bhjsbda
OK
PCS103:> set k2
OK
PCS103:> type k1
string
PCS103:> type k2
string
PCS103:> object encoding k1
"raw"
PCS103:> object encoding k2
"int"

raw 表示存储的是原生字符串,如果要查看value包含中文时 可以设置客户端模式:redis-cli --raw

2.5键是否存在
EXISTS key
键重命名
RENAME key newkey
RENAMENX key newkey
键删除
DEL key [key ...]

2.6清除数据库
清除当前库数据
FLUSHDB
清除所有库中的数据
FLUSHALL

二、string字符串

字符串是二进制安全的,最多能存储512M字节的内容

1、设置字符串值 set
SET key value [EX seconds] [PX milliseconds] [NX|XX]
  EX 设置过期时间,秒,等同于SETEX key seconds value
  PX 设置过期时间,毫秒,等同于PSETEX key milliseconds value
  NX 键不存在,才能设置,等同于SETNX key value
  XX 键存在时,才能设置
设置多个键的字符串值
MSET key value [key value ...]
键不存在时,设置字符串值
MSETNX key value [key value ...]
注意:这是原子操作

2、获取字符串值 get
GET key
获取多个给定的键的值
MGET key [key ...]
返回旧值并设置新值
GETSET key value
如果键不存在,就创建并赋值

3、字符串长度
STRLEN key

4、追加字符串
APPEND key value
如果键存在就追加;如果不存在就等同于SET key value

5、获取子字符串 索引
GETRANGE key start end
索引值从0开始,负数表示从字符串右边向左数起,-1表示最有一个字符
覆盖字符串
SETRANGE key offset value

6、步长1的增减
INCR key
DECR key
字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串

按照指定步长decrement增减
INCRBY key decrement
DECRBY key decrement
字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串

按照指定步长浮点数decrement增加
INCRBYFLOAT key decrement

7、位图
(1)赋值 取值
设置某一位上的值
SETBIT key offset value (0/1)
offset偏移量,从0开始

获取某一位上的值
GETBIT key offset

返回指定值0或者1在指定区间上第一次出现的位置偏移量
BITPOS key bit [start] [end]

(2)位运算
operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey
BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey
BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入
当BITOP处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0
空的key也被看作是包含0的字符串序列

(3)BITCOUNT统计指定位区间上值为1的个数 字节
bitpos key bit(0/1) start end > start end bit位的索引
BITCOUNT key [start] [end] > start end Byte位的索引 正负方向

案例:

网站用户的上线次数统计(活跃用户)
用户ID为key,天作为offset,上线置为1 366> 000000000000000
366 /8 50Byte 16 50
key: sean value: 11 1 000000000000000001010000000000000000
ID为500的用户,今年的第1天上线、第30天上线
SETBIT u500 1 1 1 0 0 000 0 …….1 0 00 0 > 365 /8 46 Byte
SETBIT u500 30 1
BITCOUNT sean 0 -1
KYES u*

按天统计网站活跃用户
天作为key,用户ID为offset,上线置为1
求一段时间内活跃用户数 500 / 8 366 * 63Byte
SETBIT 20160601 15 1 1 1 0 1 00 00 00 0 00 00 0
SETBIT 20160603 123 1 0 1 0 0 00 00 01 0 00 00 0
SETBIT 20160606 123 1 0 1 0 0 00 00 01 0 00 00 0
求6月1日到6月10日的活跃用户
BITOP OR aaa 20160601 20160602 20160603 20160610
BITCOUNT aaa 0 -1
结果为2

【Redis学习之四】Redis数据类型 string的更多相关文章

  1. Redis学习03——存储字符串(String)

    --------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...

  2. redis 学习(3)-- String 类型

    redis 学习(3)-- String 类型 String-结构 结构:Key-Value对 Value:可以是字符串.数字,也可以是二进制数组 限制:Value最大值为512MB String-常 ...

  3. Redis学习笔记1-Redis数据类型

    Redis数据类型 Redis支持5种数据类型,它们描述如下: Strings - 字符串 字符串是 Redis 最基本的数据类型.Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串 ...

  4. Redis学习之二 数据类型和相关命令

    原文:https://www.cnblogs.com/lonelyxmas/p/9073928.html 如果还不懂安装的,请看 Windows环境下安装Redis Redis一共支持五种数据类型 1 ...

  5. Redis学习手册(Set数据类型)

    一.概述: 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加.删除或判断某一元素是否存在等操作.需要说明的是,这些操作的时间复杂度 ...

  6. Redis 学习-安装、数据类型与 API 理解、Java 客户端

    本博客是在学习<Redis从入门到高可用,分布式实践>教程时的笔记. 同时参考: https://www.cnblogs.com/jiang910/p/10020048.html 一.Re ...

  7. Redis学习笔记~Redis主从服务器,读写分离

    回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...

  8. redis学习笔记-redis的安装

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  9. Redis学习笔记-Redis内部数据结构

    Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) ...

  10. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...

随机推荐

  1. tomcat在Eclipse中和idea中的使用

    在eclipse中的使用 下载 http://tomcat.apache.org/ 部署项目到tomcat 常见问题 访问时如何出掉项目名 中文乱码问题 1.浏览器编码问题,修改浏览器的编码 2.js ...

  2. Redis 安装、配置、集群

    1.   Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: ...

  3. 前端 HTML form表单标签 textarea标签 多行文本

    <textarea></textarea>作用:允许用户录入多行数据到表单控件中 <!DOCTYPE html> <html lang="en&qu ...

  4. RN正、反向传值,组件输出

    很简单的一个小Demo,绿色的是输出的一个组件,目标把’爱好‘从父组件传给子组件,然后把’name‘从子组件传给父组件 父组件给子组件传值可以使用props,子组件传值给父组件可以使用事件,这里不多说 ...

  5. discuz论坛 模板修改

    门户首页 template/rtj1009_007/portal/index.php 头部二级导航 template/rtj1009_007/common/toubu.php 底部内容文件 templ ...

  6. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...

  7. root_objectlist, root_object, container_objectlist, container_object 之间的关系。

  8. socket发送http报文的疑惑(求高手指点一二)

    给8080或80端口的服务端(自己写的serverSocket服务端)发送字符串,此字符串按照http协议拼接而成,既是所谓的http报文.服务端接受成功.如果在报头与消息体之间少了“\r\n\r\n ...

  9. url传输编码

    首先:协议规范,RFC 1738,定义url地址中不能包含除:0-9,a-zA-Z,- 之外的字符,即,如URL中包含特殊字符,如$-_.+!*’(), 都要编码. 关于为什么如此定义,有如下几个原因 ...

  10. 再次 WebAssembly 技术探讨

    上次说到你可以将C代码编译成web调用的js文件,当时,很兴奋.哈哈,我也误以为是系统级别的C编程呢! 哎,今天,告诉你一个残酷的事实是,只是C语言级别,不是系统级别.因为WebAssembly目标是 ...