redis 入门指南第二版 学习记录1 字符串

redis 入门指南第二版 学习记录1

说明

要先了解一下非关系型数据库
就不记录如何安装了 - -所以直接从第三章开始记录
redis入门真的很推荐这本书 >-<

第三章

  1. 使用SET 命令建立一个名为bar的键
127.0.0.1:6379> SET bar 1
OK
// 使用KEYS * 获取所有的键
127.0.0.1:6379> KEYS *
1) "bar"
注意:KEYS命令需要遍历Redis中的所有键,当键当数量较多时会影响性能,不建议在生产环境中使用
提示:Redis 不区分命令大小写
  1. 判断一个键是否存在
// 存在
127.0.0.1:6379> EXISTS bar
(integer) 1
// 不存在
127.0.0.1:6379> EXISTS barTest
(integer) 0
  1. 删除键
// 删除成功
127.0.0.1:6379> DEL bar
(integer) 1
// 删除失败
127.0.0.1:6379> DEL barTest
(integer) 0
  1. 获取键值当数据类型
    TYPE 命令用来获取键值的数据类型,返回值可能是string(字符串) hash(散列类型) list(列表类型)set(集合类型)zset(有序集合类型)
127.0.0.1:6379> SET foo 1
OK
127.0.0.1:6379> TYPE foo
string
  1. 递增数字
    当操作的键不存在时会默认键值为0,所以第一次递增后结果是1,当键值不是数字时,会提示错误。
// 操作不存在当键值时
127.0.0.1:6379> INCR num
(integer) 1
// 操作不为数字时
127.0.0.1:6379> SET foo lorem
OK
127.0.0.1:6379> INCR foo
(error) ERR value is not an integer or out of range

命令拾遗

  1. 增加指定的整数
    INCRBY命令与INCR命令基本一样,只不过前者可以通过increment参数指定一次增加的数值如:
127.0.0.1:6379> INCRBY bar 2
(integer) 2
127.0.0.1:6379> INCRBY bar 3
(integer) 5
  1. 减少指定的整数
    DECR命令与INCR命令用法相同,只不过是让键值递减,如:
127.0.0.1:6379> DECR bar
(integer) 4
// DECRBY 可指定减多少
127.0.0.1:6379> DECRBY bar 2
(integer) 2
  1. 增加指定浮点数
    INCRBYFLOAT命令类似INCRBY命令,差别是前者可以递增一个双精度浮点数,如:
127.0.0.1:6379> INCRBYFLOAT bar 2.9
"4.9"
  1. 向尾部追加值
    APPEND作用是向键值的末尾追加value,如果键值不存在则将该键的值设置为value,即相当于SET key value,返回值是追加后字符串的总长度,如:
127.0.0.1:6379> SET key hello
OK
127.0.0.1:6379> APPEND key world!
(integer) 11
  1. 获取字符串长度
    STRLEN命令返回键值的长度,如果不存在则返回0,如:
127.0.0.1:6379> STRLEN key
(integer) 11
127.0.0.1:6379> SET key 你好
OK
127.0.0.1:6379> STRLEN key
(integer) 6
提示:字符串类型可以存储二进制数据,所以它可以存储任何编码的字符串。Redis接受到的是使用UTF-8编码的中文,由于 "你","好"两个字的UTF-8编码的长度都是3,所以会返回6.
  1. 同时获得/设置多个键值
    MSET/MGET与SET/GET相似,不过前者可以设置/获取多个键值,如:
127.0.0.1:6379> MSET key1 v1 key2 v2 key3 v3
OK
127.0.0.1:6379> GET key2
"v2"
127.0.0.1:6379> MGET key1 key2 key3
1) "v1"
2) "v2"
3) "v3"
  1. 位操作符
    重要!!!只是按照书上的过一遍,最好单独去查阅一下资料,深入的理解。
    一个字节由八个二进制位组成,Redis提供了四个命令可以直接对二进制位操作。为了演示,我们首先将foo键赋值为bar
127.0.0.1:6379> SET foo bar
OK

bar的三个字母分别为"b",“a”,"r"对应的ASCII码分别为98 97 114,转换成二进制分别为1100010,1100001,1110010,所以foo键中的二进制位如下图所示
在这里插入图片描述
GETBIT命令可以获取一个字符串类型键值指定位置的二进制位的值(0或1),索引从0开始 如:

127.0.0.1:6379> GETBIT foo 0
(integer) 0
127.0.0.1:6379> GETBIT foo 6
(integer) 1
// 如果索引超出了键值的二进制实际长度默认为0
127.0.0.1:6379> GETBIT foo 6000000
(integer) 0

SETBIT命令可以设置字符串类型指定位置的二进制位的值,返回值是该位置的旧值。如果我们要将foo键值设置为aar,可以通过位操作将foo键的二进制位的索引第六位设置为0,第七位设置为1,如:

127.0.0.1:6379> SETBIT foo 6 0
(integer) 1
127.0.0.1:6379> SETBIT foo 7 1
(integer) 0
127.0.0.1:6379> GET foo
"aar"

如果要设置的位置超过了键值的二进制位的长度,SETBIT命令会自动将中间的二进制位设置为0,同理设置一个不存在的键的指定二进制位的值会自动将前面的位赋值为0;

127.0.0.1:6379> SETBIT nofoo 10 1
(integer) 0
127.0.0.1:6379> GETBIT nofoo 5
(integer) 0

BITCOUNT命令可以获取字符串类型键值是1的二进制位个数,如:

127.0.0.1:6379> BITCOUNT foo
(integer) 10
// 可以通过参数来限制统计的字节范围,如我们只希望统计前两个字(aa)
127.0.0.1:6379> BITCOUNT foo 0 1
(integer) 6

BITOP命令可以对多个字符串类型键进行位运算,并将结果存储在destkey参数指定对键中。BITOP命令支持对运算操作有AND,OR,XOR和NOT。如我们可以对bar和aar进行or运算

127.0.0.1:6379> SET foo1 bar
OK
127.0.0.1:6379> SET foo2 aar
OK
127.0.0.1:6379> BITOP or res foo1 foo2
(integer) 3
127.0.0.1:6379> GET res
"car"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值