redis基本命令

本文详细介绍了Redis的基本概念、启动与关闭方法,以及如何在Redis中存储数据,包括设置键的过期时间和查看生存时间。此外,还涵盖了查找键、基础命令、字符串类型的操作以及位图(Bitmap)的使用,如简单的查询、获取、修改和位运算。通过实例展示了Redis在数据存储和管理方面的实用功能。
摘要由CSDN通过智能技术生成

目录

1.什么是redis

2.redis的启动

3.关闭redis的方法

4 .怎样在redis中存储数据

        5.设置过期时间

          1.创建键值对时就设置过期时间

          2.先设置了键值对,再给过期时间

          3.查看生存时间

6.查找键

7.一些基础命令

8.string类型的操作

9.步长增减

         10.位图bitmap

          1.简单的查寻,获取,修改

          2.位操作 

          3.bitcount


1.什么是redis

redis是一款开源的数据库 ,使用C语言编写,基于内存的且支持持久化,使用高性能的Key-Value的NoSQL数据库

支持数据结构类型: 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps等

2.redis的启动

我们已经安装好redis后,启动redis

redis-server 这样启动会在控制台显示一堆日志信息

nohup redis-server redis.cong& 这样就把日志信息输入到了cong文件下,界面非常清爽

我们复制当前的窗口输入: redis-cli 这样就成功连接了redis数据库

 

 这样正常连接有可能连接不上,需要到redis的conf文件中查看  

  将daemonize no 更改为 daemonize yes 

关掉redis,再重新连接就可连接上了,启动在redis的bin目录下,我这个图是有问题的。

3.关闭redis的方法

先查询到redis的有关进程,然后一个一个的杀掉

ps -aux| grep redis 显示所有redis占有的端口号和其他信息 

kill - 9 端口号

4 .怎样在redis中存储数据

1.通过键值对方式存储数据,查询数据也是通过key来查询value的值

set key value

 我们还可以通过可视化的界面来看存储的数据

这里用的是Redis Desktop Manager:

2. 存储信息如果key相同,后面录入的信息会覆盖前面的

3. 一次性传入/获取多个信息

mset key value(key1 value1...)

mget key value(key1 value1...)

 

 set的时候key和value数量一定要对应上,不然会报错

注意事项:

key的值可以有多种取法:只要是可以转换成二进制序列的。例如:一个英文字母a,一个jpge文件

给key取名字的时候不易太长或太短,太短的话别人可能不知道你想表达的意思,太长的话因为redis的数据存储在内存中,key当然也在内存中存储,太多会占用内存空间

5.设置过期时间

1.创建键值对时就设置过期时间

set key  value  (ex 过期时间(秒)/ px 过期时间(毫秒) ) (nx/xx)

ex 1 就是期只有1秒

nx 是这个key不存在才可以加上

xx 是这个key存在了才可以加上

实例:创建一个新的键值对,5秒的生存期

 对老的键值重新赋值,5000毫秒,也就是5秒的生存周期

 

2.先设置了键值对,再给过期时间

set key value

expire key 过期时间(秒)

pexpire key 过期时间(毫秒)

示例: 

这里的时间还可以用时间戳来表示

 set key value

expireat key  时间戳(秒)

pexpireat key 时间戳(毫秒)

直接百度搜一个时间戳转换器,同样我们在获取的时间加上5

到 2021-11-15 21:00:39  这个键值对的生命周期就结束了 

 

3.查看生存时间

查看key的剩余生存时间,通过:

TTL key :显示剩余生存时间(秒)

PTTL key :显示剩余生存时间(毫秒)

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

演示:

没有设置生存周期的都是永久存在,TTL是-1

 设置了生存时间 5秒,再查询一下生存周期

手打代码也需要时间的,可以看到剩余生存周期还有2669毫秒

6.查找键

keys * :查找所有的键值

keys (n)?: 查询长度为n的键值

keys a? :查询以a开头,长度为2的键值

...

这里面与正则表达式相关,不多展开来

 7.一些基础命令

查看键类型 TYPE key

查看键是否存在 EXISTS key

键重命名 RENAME key newkey RENAMENX key newkey

键删除 DEL key [key ...]

键是不能够全删除的,del *不好使,他会把你的*识别为一个字符串

 获取值 get key

获取多个给定的键的值 mget key [key ...]

返回旧值并设置新值getset key value 如果键不存在,就创建并赋值

字符串长度 string key

8.string类型的操作

append key value 如果键存在就追加value的值,不存在就等同set key value

getrange key start end  字符串的索引是从0开始的,我们可以写负的索引,但是顺序必须是从左往右的,获取这个范围的字符串

setrangre key offset value 从我们的索引开始将value的值覆盖到key中原value里

1.追加操作:向str中添加456

2. 获取操作:获取str中索引3到5的内容,倒数第3到最后一位的内容

顺序必须是从左往右的,不然返回空字符串,并不会报错 

 

 3.覆盖操作,将str中的内容从偏移量为5开始,value覆盖他们

 9.步长增减

步长的加一/减一:incr key   decr key

按照自己设置的大小增加/减小 incrby/decrby key 设置的大小

其实也用可以用加法代替减法,设置的大小写成负数,他就是减法了

1.value值加一  

 value值减一

 这里我们value里写的值必须是int/float等数值类型

我们虽然输入1 ,实际上:在redis中存储是字符串”1“

增减方法会把字符串值解释成64位有符号的十进制整数来操作,结果依然转成字符串

”1“->1

先覆盖前面的value值:set a a ,试一下能不能自增

 "a"->a 这并不是十进制的整数,显然是不能用incr 和 decr 的

2.增加自己设定的大小:加上3

 减少自己设定的大小:减去3

 好像没什么用的地方:

我在增加的地方只写了一个数字,他认为我是一个没有value值的key,并且给我加了一

10.位图bitmap

在redis中,位图是定义在字符串类型中,一个字符串类型的值最多可以存储512m字节的内容

位上限:2^32 b

这么将太抽象了,举个例子一个字符串”a“在redis中是怎么样的?

0110 0001 000 00...

前8位就是a的ascII码了,后面怎么跟这么多0?这后面的0不看做数据,不会占用内存

1.简单的查寻,获取,修改

查询单个字符

getbit key offset  获取某一位的值,先设置了k的值为a

a的二进制 0110 0001所以我这里就查到第七位,后面的都是0了

查询字符串

ab二进制 :0110 0001 0010 0010

下面重点查询第14位是不是1:

 返回0或1在指定区间的位置

bitpos key bit start end

k的内容是a,对应二进制 0110 0001

 设置某一位上的值

我将k的第6位改成1,第七位改成0,ab->bb

2.位操作 

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上 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

演示:

首先创建2个键值对,然后进行与运算

这个结果是

a和b与运算后的结果 0110 0000 对应的acsII表字符结果是0

 

3.bitcount

作用:统计指定位区间上值为1的个数

bitcount key [start] [end] 从左向右从0开始,从右向左从-1开始,注意官方start、end是位,

bitcount testkey 0 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计

bitcount testkey 0  -1等同于BITCOUNT testkey 最常用的就是 BITCOUNT testkey

bitcount testkey 等同于bitcount testkey start end

 

 

 上面的是统计单个的,下面我们来看看多个的

 例题1:

网站用户的上线次数统计(活跃用户)

 现在有一个用户id为1001,今年的第1天上线、第30天上线  ,我现在想要求出他登录多少天

 利用位图,空的位置都是0,我按照登录日期设置成1,第一天登录就把位图0设置为1,上线一天就把对应位置设置为1

最后bitcount计算一下就好

例题2:

按天统计网站活跃用户 天作为key,用户ID为offset,上线置为1 求一段时间内活跃用户数

11-01 用户1,2登录

11-02 用户2登录

11-03 用户2登录

这里如果按照用户来写就不合适了,

按照每一天的日期,存储登录用户的id,再用位运算中的or 就可以把用户是否登录的信息确定下来了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值