文章目录
  1. Redis基本命令的使用-字符串
  2. 1. 简介
  3. 2. 命令
    1. 2.1 常用命令
    2. 2.2 不常用命令
  4. 3. 内部编码
  5. 4. 使用场景
    1. 4.1 缓存
    2. 4.2 计数功能
    3. 4.3 共享session
    4. 4.4 限制访问次数

[TOC]

Redis基本命令的使用-字符串

1. 简介

字符串是Redis最基础的数据结构,且其他几种数据结构都是在字符串的基础上构建的。字符串可以包括简单的字符串复杂的字符串(json, xml等)数字、甚至是二进制等。但是值的大小不能超过512M

2. 命令

2.1 常用命令

  • 设置值
1
$ set key value [EX seconds] [PX milliseconds] [NX|XX]
  • EX seconds:设置秒级过期时间
  • PX milliseconds:设置毫秒级过期时间
  • NX:键必须不存在,才能设置成功,用于添加
  • XX:键必须存在,才能设置成功,用于更新

其他相同命令

1
2
$ setex key seconds value
$ setnx key value

注: NXXX的特性可作为分布式锁的实现方式

  • 获取值
1
2
3
$ get key

# 如果键不存在,返回nil(空)
  • 批量设置值
1
$ mset key value [key value ...]
  • 批量获取值
1
2
3
$ mget key [key ...]

# 如果键不存在,返回nil(空)

批量操作命令可以有效的提高开发效率,减少网络所带来的时间开销。

  • 计数
1
2
3
4
5
6
$ incr key

# 返回结果如下
* 值不是整数,返回错误
* 值是整数,返回自增后的结果
* 键不存在,按照值为0自增,返回1

其他相同命令

1
2
3
4
5
6
7
8
## 自减
$ decr key

## 自增指定数字
$ incrby key increment

## 自增浮点数
$ incrbyfloat key increment

很多存储系统和编程语言内部使用CAS机制实现计数功能,会有一定的CPU开销。但是Redis是单线程模型,完全不存在这个问题。

2.2 不常用命令

  • 追加值
1
2
3
4
5
6
7
8
9
10
$ append key value

> 示例

127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> append key1 aa
(integer) 8
127.0.0.1:6379> get key1
"value1aa"
  • 字符串长度
1
2
3
4
5
6
7
$ strlen key

> 示例
127.0.0.1:6379> strlen key
(integer) 0
127.0.0.1:6379> strlen key1
(integer) 8

注意中文是每个字占3个字节

  • 设置并返回原值
1
2
3
4
5
6
7
$ getset key value

> 示例
127.0.0.1:6379> getset key1 value1
(nil)
127.0.0.1:6379> getset key1 value2
"value1"
  • 设置指定位置的字符
1
2
3
$ setrange key offset value

# 下标从0开始
  • 获取部分字符串
1
2
3
$ getrange key start end

# 下标从0开始,包括start和end

3. 内部编码

字符串类型的内部编码有3中:

  • int:8个字节的长整型
  • embstr:小于等于39个字节的字符串
  • raw:大于39个字节的字符串

Redis会根据当前值的类型和长度决定使用哪种编码实现。

4. 使用场景

4.1 缓存

注:与MySQl等关系型数据库不同的是,Redis没有名称空间,没有对键的名称有强制要求。所以设置合理的键名有利于防止键冲突和项目的可维护性。

推荐:业务名:对象名:id:[属性]

4.2 计数功能

使用incr命令。

注:实际计数系统可能需要考虑的问题较多,如防作弊、不同维度计数以及持久化到底层数据库等。

4.3 共享session

用于解决分布式web服务存储session的问题。

4.4 限制访问次数

使用set EX NXincr命令实现。

文章目录
  1. Redis基本命令的使用-字符串
  2. 1. 简介
  3. 2. 命令
    1. 2.1 常用命令
    2. 2.2 不常用命令
  4. 3. 内部编码
  5. 4. 使用场景
    1. 4.1 缓存
    2. 4.2 计数功能
    3. 4.3 共享session
    4. 4.4 限制访问次数