Redis学习
开启/停止redis
启动redis:
- 使用
redis-server
命令。会占用当前命令行。 - 命令式后台启动:使用nohub命令,在最后添加一个& 例:
nohup redis-server &
,这种方式不会占用命令行,以守护进程的方式在后台运行。会当前目录中创建一个 nohup.out 文件用于记录 Redis 的操作日志。 - 配置式后台启动,通过修改redis的核心配置文件redis.conf达到后台启动的目的,redis.conf在redis的安装目录下,进入redis.conf文件,修改daemonize no 修改为
yes
。使用reids-server redis.conf
启动。
停止redis:
redis-cli shutdown
命令用于停止redis。
开启登录,在配置,使用auth 密码
进行登录
redis.conf
在配置文件中可以设置一些常见的配置信息:
- 限制连接redis的ip
- 开启/关闭保护模式:默认开启的,只允许本机客户端访问。
- 设置访问密码 : 注释掉requirepass :设置新的密码,设置密码后在使用redis命令后登录:
auth pass
- 禁止/重命名命令:例如有一些危险的命令
flushal
、flushdb
,用于删除整个redis数据库,不应该随便使用,应该禁用掉。
Redis是一个开源内存数据结构存储器,经常用作数据库、缓存以及消息代理等。
Redis为用户提供了字符串、散列、列表、集合、有序集合、HyperLogLog、位图、流、地理坐标等一系列丰富的数据结构.
在上述数据结构的基础上Redis提供了很多非常实用的附加功能,比如自动过期、流水线、事务、数据持久化等
Redis服务器通过接收客户端发送的命令请求来执行指定的命令,并在命令执行完毕之后通过响应将命令的执行结果返回给客户端
命令、以及命令的可选项使用大写,命令参数以及命令参数可选项使用小写标识。
使用ping命令测试客户端与redis服务器是否连接。
ping
修改redis的端口号,默认使用6379端口。
- 在启动时指定端口号
redis-server --port 10086
- 为redis提供配置文件,将想要修改的配置,写进该文件中。创建一个配置文件:myredis.conf。再启动时加载该文件。
redis-server myredis.conf
数据类型:
- 字符串
这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来,被关联的键和值既可以是普通的文字数据,也可以是图片、视频、音频、压缩文件等更为复杂的二进制数据。
通过字符串的命令,用户可以。
- 设置键的值
- 获取键的值
- 在获取旧值的同时为字符串键设置新值
- 同时为多个字符串键设置值,或者同时获取多个字符串键的值
- 获取字符串值的长度。
- 获取字符串值指定索引范围内的内容,或者对字符串值指定索引范围内的内容进行修改。
- 将一些内容追加到字符串值的末尾
- 对字符串键存储的整数值或者浮点数值执行加法操作或减法操作。
设置值
set key value
在实际中,Redis数据库是以无序的方式存放数据库键的,一个新加入的键可能会出现在数据库的任何位置上。
用户可以通过向SET命令提供可选的NX选项或者XX选项来指示SET命令是否要覆盖一个已经存在的值。
NX选项表示只有在键没有值的时候执行才会成功,如果有值会返回空值hil表示设置失败。
set name n NX // 第二次执行失败
- XX选项表示只有在有有值的情况下执行才会成功,如果执行的键没有值,将会放弃执行操作,返回hil表示设置失败。
> 获取值
`get key` 获取指定字符串键的值
获取不存在的值返回`hil`
> 获取旧值设置新值
`getset key newVal`
返回旧值。
锁是一种同步机制,用于保证一项资源在任何时候只能被一个进程使用,如果有其他进程想要使用相同的资源,那么就必须等待,直到正在使用资源的进程放弃使用权为止。
一个锁通常会有获取和释放两种操作:
- 获取操作用于取得资源的独占使用权。在任何时候,最多只能有一个进程取得锁,我们把成功取得锁的这个进程称为锁的持有者。在锁已经被持有的情况下,所有尝试再次获取锁的操作都会失败。
- 释放操作用于放弃资源的独占使用权,一般由锁的持有者调用。在锁被释放之后,其他进程就可以再次尝试获取这个锁了
> mset 一次为多个字符串键设置值
MSET命令除了可以让用户更为方便地执行多个设置操作之外,还能有效地提高程序的效率:执行多条SET命令需要客户端和服务器之间进行多次网络通信,并因此耗费大量的时间;而使用一条MSET命令去代替多条SET命令只需要一次网络通信,从而有效地减少程序执行多个设置操作时的时间。
> mget 一次获取多个字符串键的值
MGET命令也可以将执行多个获取操作所需的网络通信次数从原来的N次降低至只需一次,从而有效地提高程序的运行效率。
> msetnx 只有在字符串键没有值的情况下设置值
MSETNX与MSET的主要区别在于,MSETNX只会在所有给定键都不存在的情况下对键进行设置,而不会像MSET那样直接覆盖键已有的值:如果在给定键当中,即使有一个键已经有值了,那么MSETNX命令也会放弃对所有给定键的设置操作。MSETNX命令在成功执行设置操作时返回1,在放弃执行设置操作时则返回0。
> 获取字符串长度
`strlen key`
> getrange 截取字符串的范围
- 字符串值的正数索引以0为开始,从字符串的开头向结尾不断递增。
- 字符串值的负数索引以-1为开始,从字符串的结尾向开头不断递减。
`getrange key start end` 指定起始索引和结束索引
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭