Bootstrap

2020/04/14 04-Redis服务和字符串类型

数据库中有个类型就是kv型的nosql,早期是新浪来做几千个节点的内存数据库。redis是用c来写的,效率没什么问题,数据都是放在内存里的,直接操作内存,为什么快是因为 kv的key是可以哈希的,可以时间复杂度 O(1)。
比如有公共session存储服务器,memacached和redis,开发中不用memacached,是因为它的数据类型比较单一,只有字符串,redis支持多种数据类型,字符串,列表,集合,位图,有序set集合,地理空间,redis几乎支持所有语言客户端。

redis主要用途三个方向,消息中间件,数据库,缓存

在这里插入图片描述
现在主流版本从2。8升到了3.2,3.X支持了自己原生的cluster,可以做一定的持久化,避免断电丢失数据
在这里插入图片描述
微软自己封装了一个windows版本
在这里插入图片描述
在这里插入图片描述
作为开发来讲,就是熟悉你要用的客户端来解决你要存储数据的问题
在这里插入图片描述

有图形化界面
在这里插入图片描述
在这里插入图片描述
redis传到服务器
在这里插入图片描述
真正运行服务应该是小权限
在这里插入图片描述
没看configure直接make即可,不装gcc,make过不了
在这里插入图片描述
解压目录里有deps,就是安装的某些依赖
在这里插入图片描述
jemalloc一般都是指内存分配,不然都是内存碎片
在这里插入图片描述
make就是来编译的,要依赖于deps里的这几项,3.2如果告诉你jemallco失败
在这里插入图片描述
3.2如果告诉你jemallco失败,安装gcc tcl之后,进入到deps进行make编译,这个make是对当前目录指定的进行编译
在这里插入图片描述
这样依赖就有了,就可以继续编译了
在这里插入图片描述
编译之后产生了几个文件,最常用的是前三个
在这里插入图片描述
在src源代码下会有编译好的东西
在这里插入图片描述
c语言的编译会生成中间的二进制文件.io,最后再编译完之后再做链接的
在这里插入图片描述
这个几个比较常用
在这里插入图片描述
rb指的是ruby,这是个ruby语言写的脚本
在这里插入图片描述
这两个字节数一样,其实可以认为是同一个东西,只不过起了别名,sentinel哨兵,可以做高可用

在这里插入图片描述
在这里插入图片描述
如果直接上面make install会直接安装到/usr/local/下,安装到这里的好处就是不用写path路径
在这里插入图片描述
可以自己建立一个
在这里插入图片描述
告诉它安装到哪里去

在这里插入图片描述
在这里插入图片描述
将生产的文件拷贝到这里来了,sentinel确实跟server等价
在这里插入图片描述
启动redis,可以先查看帮助

默认是6379端口,可以指定配置文件,可以换端口,可以起主从

在这里插入图片描述
在utiil下有个脚本,install_server.sh可以将server变成一个脚本

在这里插入图片描述
配置文件创建再哪里,log日志在哪里,还有选redis执行路径

在这里插入图片描述
但是现在不想手动敲,要配置path路径,配置在家目录下bashrc和bash_profile都可以
在这里插入图片描述
在这里插入图片描述
可以source,也可以重新登录
在这里插入图片描述
现在就有了
在这里插入图片描述
再次执行,可执行文件就不用自己加路径了在这里插入图片描述
配置文件生成,还有runlevel都加了
在这里插入图片描述
会加在这里

在这里插入图片描述
应该改个名字
在这里插入图片描述
在这里插入图片描述
改了名checkconfig就没了,所以换一下chkconfig

在这里插入图片描述
在这里插入图片描述

查看配置文件
在这里插入图片描述
可能在本机做测试所以把127.0.0.1保留一下

在这里插入图片描述

在这里插入图片描述
tcp保活多长时间,demonize yes表示会以后台服务的方式跑起来
在这里插入图片描述
默认有16个库,从0号-15号,在配置有些集群的时候必须配置0号库,单点的无所谓
在这里插入图片描述
redis已经运行了
在这里插入图片描述
reload的意思就是重新读取配置文件,但是不支持
在这里插入图片描述
我们只能restart,单节点的redis服务就启动好了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
windows的从微软自己账号下的rediis可以直接git,直接启动redis-server,如果想要配置成redis服务,就–help,如何将windows下的redis配置成开机自启
在这里插入图片描述
最大内存多少个字节,每条数据占多少个字节到时候可以预估一下总的内存多少,top一下可以看看,一旦用到swap,说明要加内存了
在这里插入图片描述
支持的数据类型很丰富
在这里插入图片描述
redis的key是二进制安全的,用的二进制是没什么问题的,用任何一个二进制序列,可以把一个字符串转换成二进制的,字节序列没有问题,甚至是可以把jpg图片存成二进制流 ,一般key不应该过于长,
也不宜过短,可读性较差。
user:123:password,表示用户id为123的用户的密码是什么

在这里插入图片描述
在这里插入图片描述

value的类型非常多,字符串是最基本类型,几乎可以存任何数据,一个字符串类型的值最多能存储512M字节的内容

在这里插入图片描述
python里的redis编程一般要操作这个redis库,提供了日常所有操作,它的所有API跟所有命令名一模一样
在这里插入图片描述
在这里插入图片描述
0号库是默认,端口默认是6379

在这里插入图片描述
在这里插入图片描述
用bytes也可以,其实就是字符串

在这里插入图片描述
可以用0b,set一个key,a是value,看看二进制是否安全,16进制就是61,也是a,相当于a:a,ascii码就是0x61
在这里插入图片描述
看一下key
在这里插入图片描述
它是首先将二进制数转成十进制,方便计算先转换成16进制61,6*16就是96+1=97,97变成string,这样一个过程,返回一个bytes
在这里插入图片描述‘’get方法
在这里插入图片描述
用字符串速度更快

在这里插入图片描述
这样拿还是先转成10进制,再换成字符串

在这里插入图片描述
它有这个特点,所谓的二进制安全本质是将所有的数据转换成10进制之后再转成字符串,内部都是bytes,只不过bytes需要把数据转换一次
在这里插入图片描述
这样就可以拿回来,这样可以当字典来看,有就覆盖,没有就增加
在这里插入图片描述
3也是先转成10进制,再转换成字符串,python的bytes为什么安全,是因为把它当做一个个字节整数来看,就是0-255
在这里插入图片描述

在这里插入图片描述
用key还是value改变都一样
在这里插入图片描述
返回98之后就变成2个字节了,转成2个字节,长度有可能会边长
在这里插入图片描述
数值会先转成10进制64位符号,再转成字符串,再存入redis中

在这里插入图片描述
redis可以使用客户端查看帮助
在这里插入图片描述
这是set命令如何来用

在这里插入图片描述
集合类型所有方法

在这里插入图片描述
在这里插入图片描述
这里有中文网告诉你如何去使用

在这里插入图片描述
在这里插入图片描述
忘记了可以命令行查看帮助,下面也有提示

在这里插入图片描述
在这里插入图片描述
**字符串放进去也是二进制序列,
EX seconds就是过期时间
PX 设置毫秒过期时间
NX x=exist,不存在
xx 存在 **
在这里插入图片描述
不指定就是不管存在不存在,存在就覆盖,不存在就写一个新的

在这里插入图片描述

NX的意思是,设置一个key value。,只有这个键不存在,才能把语句执行成功
在这里插入图片描述
xx的意思是只有键存在,才成功
在这里插入图片描述
m=multi,就是塞入多值,一次可以创建多个键值对
在这里插入图片描述
要求创建这些键值对的键不应该存在,这是个原子操作,如果设置成功都得设置成功,但凡有一个因为key存在了,就设置失败了,如果失败,刚才设置的所有都还原,没有发生过
在这里插入图片描述

在这里插入图片描述
返回0就代表没操作成功

在这里插入图片描述

在这里插入图片描述
redis可以给每个key做设置,可以做,也可以不做,可以为每一个key,也就是键值对设置一个过期时间,当达到这个时长后,这个键值对会自动删除,但不保证是立即的,一般都是先标记过期,然后再清理

在这里插入图片描述
指定时间戳就是指定在某个时间点来过期

在这里插入图片描述
只要一敲这个key,就永久保存下来了
在这里插入图片描述
一个是持续多久过期,一个是到哪个时间点过期,需要区分

在这里插入图片描述
TTL 是 time to live,告诉你这个key还能生存多久。
2.8版本后,如果这个key曾经存在来过,但最近消亡了,返回值是-2

在这里插入图片描述
设置一个key的时候就可以设置过期时间为20秒在这里插入图片描述
可以看看它到底有多长

在这里插入图片描述
可以单独设置一个新的值
在这里插入图片描述
单独要求它过期

在这里插入图片描述
看看它

在这里插入图片描述
没过期之间可以要求它再持久
在这里插入图片描述
设置一个s5,过期时间10秒,可以用ttl不停的看
在这里插入图片描述
可以把s5持久一下
在这里插入图片描述
还可以再让它过期。-2曾经来过,-1永不过期,2.8以后可以区分哪些是曾经有过的key
在这里插入图片描述
指定时间戳到这个点就过期了
在这里插入图片描述

在这里插入图片描述
key的操作,通配符代表任意长度

在这里插入图片描述
问号?代表一个字符

在这里插入图片描述
这个跟正则表达式规则类似

在这里插入图片描述
在这里插入图片描述
在全局可能会需要做下type,现在类型用的都是string,是否存在用0和1表是,0不存在,1存在
在这里插入图片描述
还可以rename

在这里插入图片描述
key名称只要能对上,就直接删除

在这里插入图片描述
get方法
在这里插入图片描述
在这里插入图片描述
每一种类型取长度是不一样的
在这里插入图片描述
先拿后改
在这里插入图片描述
redis本质是kv,value可以选择string,dict(哈希,set(集合类型(这是拿python的类型来解释,就是嵌套结构),类型变化指的是value的变化
在这里插入图片描述
在这里插入图片描述

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;