Redis入门指南 --day001

启动redis

  • 直接启动 直接运行 redis-server 默认6379 端口
  • redis-server --port 6378 可以指定端口启动
  • redis_server /conf/redis.conf 可以通过指定配置文件启动
  • redis 客户端:redis_cli -h 127.0.0.1 -p 6379 自定义地址和端口, 输入 PING 测试客户端是否正常连接

常用命令:

  • 判断键是否存在 exists key1 存在返回 1 否则返回 0
127.0.0.1:6379> exists bar
(integer) 0
127.0.0.1:6379> set bar 1
OK
127.0.0.1:6379> exists bar
(integer) 1
127.0.0.1:6379>
  • 删除键:可以删除一个或多个键 返回值为删除键的个数
127.0.0.1:6379> del bar
(integer) 1
127.0.0.1:6379> del bar
(integer) 0
127.0.0.1:6379>
  • 获得键值的数据类型 type key

TYPE命令用来获得键值的数据类型,返回值可能是string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。例如:

127.0.0.1:6379> set bar 1
OK
127.0.0.1:6379> type bar
string
127.0.0.1:6379> lpush foo 1
(integer) 1
127.0.0.1:6379> type foo
list
LPUSH命令的作用是向指定的列表类型键中增加一个元素,如果键不存在则创建它。

字符串类型是 Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON化的对象甚至是一张图片。一个字符串类型键允许存储的数据的最大容量是512 MB。

  • 递增数字 incr key

当存储的字符串是整数形式时,Redis提供了一个实用的命令INCR,其作用是让当前键对应的值递增,并返回递增后的值,用法为:

127.0.0.1:6379> incr loo
(integer) 1
127.0.0.1:6379> get loo
"1"
127.0.0.1:6379> incr foo
(error) WRONGTYPE Operation against a key holding the wrong kind of value
当要操作的键不存在时会默认键值为0,所以第一次递增后的结果是1。当键值不是整数时Redis会提示错误

Redis对于键的命名并没有强制的要求,但比较好的实践是用“对象类型:对象ID:对象属性”来命名一个键,如使用键user:1 :friends来存储ID为1的用户的好友列表。对于多个单词则推荐使用“.”分隔,一方面是沿用以前的习惯(Redis以前版本的键名不能包含空格等特殊字符),另一方面是在redis-cli中容易输入,无需使用双引号包裹。另外为了日后维护方便,键的命名一定要有意义,如u:1:f的可读性显然不如user:1:friends好(虽然采用较短的名称可以节省存储空间,但由于键值的长度往往远远大于键名的长度,所以这部分的节省大部分情况下并不如可读性来得重要)。

  • 增加指定整数 INCRBY key increment

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

127.0.0.1:6379> get loo
"2"
127.0.0.1:6379> incrby loo 2
(integer) 4
  • 减少指定整数 DECR key DECRBY key increment

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

  • 增加指定浮点数 INCRBYFLOAT key increment
127.0.0.1:6379> incrby loo 2
(integer) 4
127.0.0.1:6379> incrbyfloat loo 2.5
"6.5"
127.0.0.1:6379>
  • 向尾部追加值 APPEND key value

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

127.0.0.1:6379> set s hello
OK
127.0.0.1:6379> get s
"hello"
127.0.0.1:6379> append s world
(integer) 10
127.0.0.1:6379> get s
"helloworld"
  • 获取字符串长度 STRLEN key

STRLEN命令返回键值的长度,如果键不存在则返回0。例如:

127.0.0.1:6379> strlen s
(integer) 10

前面提到了字符串类型可以存储二进制数据,所以它可以存储任何编码的字符串。例子中 Redis接收到的是使用UTF-8编码的中文,由于“你”和“好”两个字的UTF-8编码的长度都是3,所以此例中会返回6。

  • 同时获得/设置多个键值 MSET key value key value… MGET key key…
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379>
  • 位操作
GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end]
BITOP operation  destkey key...
一个字节由8个二进制位组成,Redis提供了4个命令可以直接对二进制位进行操作。为了演示,
我们首先将foo键赋值为bar:

127.0.0.1:6379> set foo bar
OK

bar的3个字母“b”“a”和“r”对应的ASCII码分别为98、97和114,转换成二进制后分别为1100010、1100001和1110010 如下

在这里插入图片描述
GETBIT命令可以获得一个字符串类型键指定位置的二进制位的值(0或1),索引从0开始:

127.0.0.1:6379> getbit foo 0
(integer) 0

127.0.0.1:6379> getbit foo 1
(integer) 1
127.0.0.1:6379> getbit foo 2
(integer) 1
127.0.0.1:6379> getbit foo 100
(integer) 0
如果需要获取的二进制位的索引超出了键值的二进制位的实际长度则默认位值是0

SETBIT命令可以设置字符串类型键指定位置的二进制位的值,返回值是该位置的旧值。如我们要将foo键值设置为aar,可以通过位操作将foo键的二进制位的索引第6位设为0,第7位设为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

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

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

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、付费专栏及课程。

余额充值