一、Redis的概述
1、什么是redis?
Redis 开源 遵循BSD 基于内存数据存储 被用于作为内存型和键值型数据库,缓存 ,消息中间件
`1.redis都是存储在内存 2.使用场景:数据库存储数据,缓存(重要),消息中间件 3.redis数据存储结构:一个键对应一个值 key=value key都是字符串类型 value支持丰富的数据类型:String,List,Set,Zset(自然排序),Hash 4.内存型数据库:特点数据存储在内存中 断电 丢失数据 支持数据的持久化,将数据存储到硬盘中,定时将数据持久化一次`
rdis中文官网:http://www.redis.cn/
2、redis的特点
Redis是一个高性能key/value内存型数据库
Redis支持丰富的数据类型 String list hash set zset
Redis支持持久化 内存数据 ----> 磁盘(持久化过程中使用了父子进程 )
Redis单线程,单进程 线程安全(没有多线程并发访问,数据安全)
注意:redis6.0之后开始支持多线程
3、什么是BSD开源协议?
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
二、redis安装过程
redis是一个开源的 内存型 键值型
0.准备环境
阿里云
centos7.x+
redis 4.x+(我使用的是:redis-4.0.10)
1.下载redis源码包
2.下载完整源码包
redis-4.0.10.tar.gz
3.将下载redis资料包上传到Linux中
4.解压缩文件
[root@localhost ~]# tar -zxvf redis-4.0.10.tar.gz [root@localhost ~]# ll
5.安装gcc
yum install -y gcc
6.进入解压缩目录执行如下命令
[root@iZbp1bq6vb70qo4o5mrxdzZ ~]# ll [root@iZbp1bq6vb70qo4o5mrxdzZ ~]# cd redis-4.0.10 [root@iZbp1bq6vb70qo4o5mrxdzZ redis-4.0.10]# make MALLOC=libc
7.编译完成后执行如下命令
make install PREFIX=/usr/redis
8.进入/usr/redis目录启动redis服务端
redis安装成功后只有bin目录,存放二进制执行命令文件
redis-server:启动redis服务器的命令
redis-cli:启动redis客户端的命令
[root@iZbp1bq6vb70qo4o5mrxdzZ redis-4.0.10]# cd /usr/redis/bin/ [root@iZbp1bq6vb70qo4o5mrxdzZ bin]# ll -rwxr-xr-x 1 root root 353640 Dec 2 10:51 redis-benchmark -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-check-aof -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-check-rdb -rwxr-xr-x 1 root root 519840 Dec 2 10:51 redis-cli lrwxrwxrwx 1 root root 12 Dec 2 10:51 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-server [root@iZbp1bq6vb70qo4o5mrxdzZ bin]# ./redis-server
9.Redis服务端口默认是 6379
10.进入bin目录执行客户端连接操作
(1)步骤:右击112.124.69.95这个位置,然后点击克隆会话(服务器不要关闭)
(2)启动客服端并连接成功出现上面界面连接成功
[root@iZbp1bq6vb70qo4o5mrxdzZ ~]# cd /usr/redis/bin/ [root@iZbp1bq6vb70qo4o5mrxdzZ bin]# ll total 11536 -rwxr-xr-x 1 root root 353640 Dec 2 10:51 redis-benchmark -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-check-aof -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-check-rdb -rwxr-xr-x 1 root root 519840 Dec 2 10:51 redis-cli lrwxrwxrwx 1 root root 12 Dec 2 10:51 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 3643640 Dec 2 10:51 redis-server [root@iZbp1bq6vb70qo4o5mrxdzZ bin]# ./redis-cli 127.0.0.1:6379> set name whj OK 127.0.0.1:6379> get name "whj" 127.0.0.1:6379>
11、关闭redis服务器
shutdown
三、redis需要注意的细节
(1)redis 内存型 非关系型数据库(键值型)
数据都存储在内存中,效率高,断电数据丢失
(2)配置文件启动
当前启动方式:./redis-server 使用redis默认设置启动
如果要修改默认配置需要在redis配置文件
将redis.cong拷贝
绝对路径:./redis-server /usr/redis/redis.conf 相对路径:./redis-server ../redis.conf
修改redis的端口号,进入redis.conf
[root@localhost redis]# vi redis.conf ll
(3)redis的默认库配置
redis管理单位:子库
redis服务器启动时会初始化16个子库(从0开始到15结束 )
默认进入的就是0库
修改默认库的个数
[root@localhost redis]# vi redis.conf # dbid is a number between 0 and 'databases'-1 databases 16 更改为5
客户端访问
select dbid 选定字库操作
四、Redis数据库相关指令
1、数据库操作指令
(1)修改当前选中的子库
使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15 可以使用select 库的编号 来选择一个redis的库
(2)Redis中操作库的指令
- 清空当前的库 FLUSHDB - 清空全部的库 FLUSHALL
(3)redis客户端显示中文
./redis-cli – raw
- redis默认插入可以操作中文,但是获取不展示中文
在打开客户端时:./redis-cli 命令后面 加上 --raw 即可看到中文。
(
(4)DEL指令
- 语法 : DEL key [key ...] - 作用 : 删除给定的一个或多个key 。不存在的key 会被忽略。 - 可用版本: >= 1.0.0 - 返回值: 被删除key 的数量。
支持同时删除多个
127.0.0.1:6379> set name 王恒杰 127.0.0.1:6379> set age 21 127.0.0.1:6379> del name age 127.0.0.1:6379> keys *
(5)检查那个key是否存在
exists 检查那个键是否存在 127.0.0.1:6379> exists name EXISTS指令 语法: EXISTS key 作用: 检查给定key 是否存在。 可用版本: >= 1.0.0 返回值: 若key 存在,返回1 ,否则返回0。
(6)设置某个键的存活时长
- expire [ɪkˈspaɪər]翻译:无效
- 超过对应毫秒数后简直失效
- expire:单位秒
expire - 语法: EXPIRE key seconds - 作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。 - 可用版本: >= 1.0.0 - 时间复杂度: O(1) - 返回值:设置成功返回1 。 用处:短信验证码有效时间
pexpire:单位毫秒
- 语法 : PEXPIRE key milliseconds - 作用 : 这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。 - 可用版本: >= 2.6.0 - 时间复杂度: O(1) - 返回值:设置成功,返回1 key 不存在或设置失败,返回
(7)查看当前所有键 keys
keys * 查看所有 *:匹配0到多个字符 ?:匹配一个字符 []:匹配范围内的一个字符 keys h[abcd]llo 语法 : KEYS pattern 作用 : 查找所有符合给定模式pattern 的key 。 语法: KEYS * 匹配数据库中所有key 。 KEYS h?llo 匹配hello ,hallo 和hxllo 等。 KEYS h*llo 匹配hllo 和heeeeello 等。 KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 "\" 隔开 可用版本: >= 1.0.0 返回值: 符合给定模式的key 列表。
(8)move 将数据库中的key移动到另外一个子数据库中
- 语法 : MOVE key db - 作用 : 将当前数据库的key 移动到给定的数据库db 当中。 - 可用版本: >= 1.0.0 - 返回值: 移动成功返回1 ,失败则返回0 。
(9)TTL 返回某个键存活的时间(单位:秒)
ttl key 和expire key一起使用 - 语法 : TTL key - 作用 : 以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。 - 可用版本: >= 1.0.0 - 返回值: 当key 不存在时,返回-2 。 当key 存在但没有设置剩余生存时间时,返回-1 。 否则,以秒为单位,返回key 的剩余生存时间。 - Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1
(9)PTTL返回某个键存活的时间(单位:毫秒)
- 语法 : PTTL key - 作用 : 这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。 - 可用版本: >= 2.6.0 - 返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。 - 否则,以毫秒为单位,返回key 的剩余生存时间。 - 注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
(10)randomkey随机返回
- 语法 : RANDOMKEY - 作用 : 从当前数据库中随机返回(不删除) 一个key 。 - 可用版本: >= 1.0.0 - 返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil
(11)RENAME 改名
- 语法 : RENAME key newkey - 作用 : 将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。 - 可用版本: >= 1.0.0 - 返回值: 改名成功时提示OK ,失败时候返回一个错误。
(12)type 返回某个键对应的值的类型
- 语法 : TYPE key - 作用 : 返回key 所储存的值的类型。 - 可用版本: >= 1.0.0 - 返回值: none (key 不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表)