Redis概述和使用
typora-root-url: ..
02_redis概述和使用
一、目标
Redis 简介
Redis 安装
Redis 数据类型使用
Redis 之 Keys 通用操作
使用可视化工具连接 Redis
使用 Jedis 连接 Redis
二、内容
###1、Redis 简介
1)、NoSQL介绍
NoSQL (Not noly SQL)不仅仅是SQL,属于非关系型数据库
Redis就属于非关系型数据库
传统的Mysql ,oracle ,sql server 等 都是关系型数据库为什么需要NoSQL,主要应对以下问题,传统关系型数据库力不从心
High performance -高并发读写
Huge Storage-海量数据的高效率存储和访问
High Scalablility && High Availability 高可扩展性和高可用性
NoSQL 产品 MongoDB Redis等等 Redis目前主流
NoSQL的特点
易扩展
灵活的数据模型
大数据量,高性能
高可用
2)、redis介绍
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
高性能键值对数据库,支持的键值数据类型
字符串类型(String)
列表类型(List)
有序集合类型(Sorted-set)
散列类型(Hash)
集合类型(Set)
Redis的应用场景
缓存
任务队列
网站访问统计
数据过期处理
应用排行榜
分布式集群架构中的session分离
2、Redis 安装
Redis从一开始就只支持Linux,后面虽然有团队搞出Window版本,但是我还是建议大伙安装到Linux中
准备工作 VMware 以及Xshell(这个之前的内容中同学们已经学过)
redis官方安装教程,但是比较简单,不适合生产环境的安装部署
https://redis.io/ 大家可以按照官网教程去安装
同学们按照以下方式安装
1)、安装gcc
gcc编译c的,因为redis是c编写的,所以我们先安装下gcc
yum install gcc-c++
2)、redis安装准备
下载
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
解压
tar -zxvf redis-3.2.9.tar.gz
查看
[root@localhost ~]# ll
总用量 1548
-rw-------. 1 root root 1261 6月 27 19:54 anaconda-ks.cfg
-rw-r--r--. 1 root root 25680 4月 27 18:45 mysql57-community-release-el7-11.noarch.rpm
drwxrwxr-x. 6 root root 4096 5月 17 23:39 redis-3.2.9
-rw-r--r--. 1 root root 1547695 5月 17 23:40 redis-3.2.9.tar.gz
[root@localhost ~]#
这样/root/目录下就有redis了
编译
进入目录 cd redis-3.2.9
编译 make
3)、安装redis
安装到/usr/local/redis/
make PREFIX=/usr/local/redis install
查看安装情况
cd /usr/local/
ll
已经有redis
[root@localhost local]# cd redis/
[root@localhost redis]# ll
总用量 0
drwxr-xr-x. 2 root root 134 7月 2 16:44 bin
[root@localhost redis]#
redis里有个bin
[root@localhost redis]# cd bin/
[root@localhost bin]# ll
总用量 15060
-rwxr-xr-x. 1 root root 2431832 7月 2 16:44 redis-benchmark
-rwxr-xr-x. 1 root root 25168 7月 2 16:44 redis-check-aof
-rwxr-xr-x. 1 root root 5181840 7月 2 16:44 redis-check-rdb
-rwxr-xr-x. 1 root root 2584848 7月 2 16:44 redis-cli
lrwxrwxrwx. 1 root root 12 7月 2 16:44 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 5181840 7月 2 16:44 redis-server
[root@localhost bin]#
bin里是一些工具
cd回到root,我们需要把一个配置文件 复制到 redis下 后台启动用到
[root@localhost redis-3.2.9]# cp redis.conf /usr/local/redis/
[root@localhost redis-3.2.9]# ll /usr/local/redis/
总用量 48
drwxr-xr-x. 2 root root 134 7月 2 16:44 bin
-rw-r--r--. 1 root root 46695 7月 2 16:49 redis.conf
[root@localhost redis-3.2.9]#
4)、启动和关闭redis服务
启动redis就是执行redis里的bin里的redis-server命令
进入redis目录 执行
[root@localhost redis-3.2.9]# cd /usr/local/redis/
[root@localhost redis]# bin/redis-server
出现这种图标,说明启动成功。
但是 ,这种启动是前端或者前台启动,假如退出 程序就终止或者退出了。
所以这种服务程序,必须后端运行。我们通过修改配置文件redis.conf,操作,我们ctrl+c 退出当前程序。
vi打开redis.conf vi /usr/local/redis/redis.conf 找到
把no改成yes,esc退出 wq!保存
然后进入redis目录,然后加载配置文件运行
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# ./bin/redis-server ./redis.conf
我们通过ps -ef | grep -i redis命令来搜索redis服务
[root@localhost redis]# ps -ef | grep -i redis
root 8692 1 0 16:52 ? 00:00:19 bin/redis-server *:6379
root 8954 8930 0 20:30 pts/0 00:00:00 grep --color=auto -i redi
[root@localhost redis]#
我们通过shutdown命令来停止redis服务的运行
[root@localhost redis]# ./bin/redis-cli shutdown
[root@localhost redis]# ps -ef | grep -i redis
root 8959 8930 0 20:35 pts/0 00:00:00 grep --color=auto -i redi
[root@localhost redis]#
####5)、redis基本使用
进入客户端
启动redis服务器端
[root@localhost redis]# ./bin/redis-server ./redis.conf
进入到redis客户端
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379>
我们存储 name:djin,key:value格式
通过set设置,通过get获取
127.0.0.1:6379> set name djin
OK
127.0.0.1:6379> get name
"djin"
通过set设置,通过get获取
通过del删除key,keys,显示所有keys
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
3、Redis 数据类型使用
前面我们介绍了redis有五种数据类型,接下来我们一一都学习一下
Key定义的注意点:不要过长,不要过短,统一的命名规范
1)、String类型
二进制安全的,存入和获取的数据相同;Value最多可以容纳的数据长度是512M
String类型常用命令:赋值、取值、删除、数值增减、扩展命令
赋值
127.0.0.1:6379> set title '标题'
OK
取值
127.0.0.1:6379> get title
"标题"
获取并设置值
127.0.0.1:6379> getset title open1111
"标题"
127.0.0.1:6379> get title
"open1111"
删除
127.0.0.1:6379> del title
(integer) 1
127.0.0.1:6379> get title
(nil) 表示没有此数据
incr key 自增1
假如没有定义 则默认0
假如非数值类型 则报错
127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
"1"
127.0.0.1:6379> set nn 2
OK
127.0.0.1:6379> incr nn
(integer) 3
127.0.0.1:6379> get nn
"3"
127.0.0.1:6379>
127.0.0.1:6379> set n2 djin
OK
127.0.0.1:6379> incr n2
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
decr key 自减1
127.0.0.1:6379> decr nn
(integer) 2
127.0.0.1:6379> get nn
"2"
127.0.0.1:6379>
incrby key 指定增量值
127.0.0.1:6379> incrby nn 8
(integer) 10
127.0.0.1:6379> get nn
"10"
127.0.0.1:6379>
decrby key 指定减量值
127.0.0.1:6379> decrby nn 4
(integer) 6
127.0.0.1:6379> get nn
"6"
127.0.0.1:6379>
append 追加字符串
假如没定义 直接赋值
127.0.0.1:6379> append s1 jj
(integer) 2
127.0.0.1:6379> get s1
"jj"
127.0.0.1:6379> append s1 bb
(integer) 4
127.0.0.1:6379> get s1
"jjbb"
2)、List类型
ArrayList使用数组方式,LinkedList使用双向链接方式
双向链接表中增加数据,双向链接表中删除数据
List类型常用命令:两端添加、两端弹出、扩展命令
lpush 方式添加一个或者多个元素
从左边开始添加
127.0.0.1:6379> lpush l1 a b c d
(integer) 4
127.0.0.1:6379> lpush l1 1 2 3 4
(integer) 8
lrange 获取指定方位的集合元素
从第1个开始 到倒数第一个 也就是最后一个 也就是 所有数据
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
8) "a"
获取从第1个到第6个集合元素
127.0.0.1:6379> lrange l1 0 6
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
rpush 从右端开始添加一个或者多个元素(一般人比较习惯这种方式)
127.0.0.1:6379> rpush l2 a b c d
(integer) 4
127.0.0.1:6379> rpush l2 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
8) "4"
127.0.0.1:6379> lrange l2 0 6
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
lpop 左侧弹出集合元素
127.0.0.1:6379> lrange l2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
8) "4"
127.0.0.1:6379> lpop l2
"a"
127.0.0.1:6379> lrange l2 0 -1
1) "b"
2) "c"
3) "d"
4) "1"
5) "2"
6) "3"
7) "4"
rpop 右侧弹出集合元素
127.0.0.1:6379> lrange l2 0 -1
1) "b"
2) "c"
3) "d"
4) "1"
5) "2"
6) "3"
7) "4"
127.0.0.1:6379> rpop l2
"4"
127.0.0.1:6379> lrange l2 0 -1
1) "b"
2) "c"
3) "d"
4) "1"
5) "2"
6) "3"
llen查看元素个数
127.0.0.1:6379> llen l2
(integer) 6
lpushx 集合头部插入元素
127.0.0.1:6379> lpushx l2 xx
(integer) 7
127.0.0.1:6379> lrange l2 0 -1
1) "xx"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
rpushx 集合尾部插入元素
127.0.0.1:6379> rpushx l2 yy
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
1) "xx"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
8) "yy"
lrem 从指定方向删除指定个数的指定元素
先加点数据搞个新集合l3
127.0.0.1:6379> lpush l3 1 3 2 3 2 1 2 1 3
(integer) 9
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "1"
3) "2"
4) "1"
5) "2"
6) "3"
7) "2"
8) "3"
9) "1"
从左边开始删除2个1
127.0.0.1:6379> lrem l3 2 1
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "2"
3) "2"
4) "3"
5) "2"
6) "3"
7) "1"
从右边开始删除2个3
127.0.0.1:6379> lrem l3 -2 3
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "2"
3) "2"
4) "2"
5) "1"
删除所有2
127.0.0.1:6379> lrem l3 0 2
(integer) 3
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "1"
lset 设置集合指定索引的值
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
8) "a"
索引从0开始
127.0.0.1:6379> lset l1 3 xxxx
OK
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "xxxx"
5) "d"
6) "c"
7) "b"
8) "a"
linsert 在集合里插入指定元素
在xxxx元素之前插入aa
127.0.0.1:6379> linsert l1 before xxxx aa
(integer) 9
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "aa"
5) "xxxx"
6) "d"
7) "c"
8) "b"
9) "a"
在xxxx元素之后插入bb
127.0.0.1:6379> linsert l1 after xxxx bb
(integer) 10
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "aa"
5) "xxxx"
6) "bb"
7) "d"
8) "c"
9) "b"
10) "a"
rpoplpush 把A集合尾部元素弹出并插入到B集合头部
127.0.0.1:6379> rpush l4 a b c
(integer) 3
127.0.0.1:6379> rpush l5 1 2 3
(integer) 3
127.0.0.1:6379> lrange l4 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange l5 0 -1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> rpoplpush l4 l5
"c"
127.0.0.1:6379> lrange l4 0 -1
1) "a"
2) "b"
127.0.0.1:6379> lrange l5 0 -1
1) "c"
2) "1"
3) "2"
4) "3"
3)、Hash类型
String key和String Value的Map容器,每一个Hash可以存储4294967295个键值对
Hash类型常用命令:赋值、取值、删除、增加数字、判断字段是否存在、获取hash属性个数、获取hash所有属性名称
hset单个字段设置和hget单个字段取值
127.0.0.1:6379> hset h1 username djin
(integer) 1
127.0.0.1:6379> hset h1 password 123456
(integer) 1
127.0.0.1:6379> hget h1 username
"djin"
127.0.0.1:6379> hget h1 password
"123456"
hmset 多个字段一起设置和hmget多个值取出
127.0.0.1:6379> hmset h2 username open1111 password 123456
OK
127.0.0.1:6379> hmget h2 username
1) "open1111"
127.0.0.1:6379> hmget h2 password
1) "123456"
127.0.0.1:6379> hmget h2 username password
1) "open1111"
2) "123456"
hgetall取出所有设置的字段值
127.0.0.1:6379> hgetall h2
1) "username"
2) "open1111"
3) "password"
4) "123456"
hdel删除属性,可以一次删除一个或者多个
127.0.0.1:6379> hdel h2 username password
(integer) 2
127.0.0.1:6379> hgetall h2
(empty list or set)
hincrby增加数字
127.0.0.1:6379> hset h1 age 20
(integer) 1
127.0.0.1:6379> hincrby h1 age 5
(integer) 25
hexists判断字段是否存在 1表示存在 0表示不存在
127.0.0.1:6379> hexists h1 age
(integer) 1
127.0.0.1:6379> hexists h1 age2
(integer) 0
hlen获取hash属性个数
127.0.0.1:6379> hlen h1
(integer) 3
127.0.0.1:6379> hlen h2
(integer) 0
hkeys获取所有属性名称
127.0.0.1:6379> hkeys h1
1) "username"
2) "password"
3) "age"
127.0.0.1:6379> hkeys h2
(empty list or set)
hvals获取所有属性值
127.0.0.1:6379> hvals h1
1) "java1234"
2) "123456"
3) "25"
127.0.0.1:6379> hvals h2
(empty list or set)
127.0.0.1:6379>
4)、Set类型
和List类型不同的是,Set集合中不允许出现重复的元素,Set可包含的最大元素数量是4294967295
Set类型常用命令:添加/删除元素、获取集合中的元素、集合中的差集运算、集合中的交集运算、集合中的并集元算、扩展命令
sadd key member [member ...],添加set元素
添加三个元素
127.0.0.1:6379> sadd set1 a b c
(integer) 3
smembers key,查看指定key集合元素
127.0.0.1:6379> smembers set1
1) "c"
2) "b"
3) "a"
继续添加元素 发现 重复元素不再添加
127.0.0.1:6379> sadd set1 a d e
(integer) 2
127.0.0.1:6379> smembers set1
1) "c"
2) "d"
3) "b"
4) "a"
5) "e"
srem key member [member ...],删除元素
删除两个元素
127.0.0.1:6379> srem set1 a d
(integer) 2
127.0.0.1:6379> smembers set1
1) "b"
2) "c"
3) "e"
sismember key member,判断某个元素是否存在 返回1 表示存在 返回0表示不存在
127.0.0.1:6379> sismember set1 a
(integer) 0
127.0.0.1:6379> sismember set1 b
(integer) 1
sdiff,计算差集
集合的顺序不同 结果不一样 根据前者参考
127.0.0.1:6379> sadd set2 a b c
(integer) 3
127.0.0.1:6379> sadd set3 b c d e
(integer) 4
127.0.0.1:6379> sdiff set2 set3
1) "a"
127.0.0.1:6379> sdiff set3 set2
1) "d"
2) "e"
sinter,计算交集
127.0.0.1:6379> sinter set2 set3
1) "c"
2) "b"
sunion,计算并集
127.0.0.1:6379> sunion set2 set3
1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
scard,计算元素总数
127.0.0.1:6379> smembers set1
1) "b"
2) "c"
3) "e"
127.0.0.1:6379> scard set1
(integer) 3
srandmember,随机取一个元素
127.0.0.1:6379> srandmember set1
"c"
127.0.0.1:6379> srandmember set1
"e"
sdiffstore,把差集结果存储到新集合中
127.0.0.1:6379> smembers set2
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> smembers set3
1) "c"
2) "e"
3) "d"
4) "b"
127.0.0.1:6379> sdiffstore r1 set2 set3
(integer) 1
127.0.0.1:6379> smembers r1
1) "a"
sinterstore,把交集结果存储到新集合中
127.0.0.1:6379> sinterstore r2 set2 set3
(integer) 2
127.0.0.1:6379> smembers r2
1) "c"
2) "b"
sunionstore,把并集结果存储到新集合中
127.0.0.1:6379> sunionstore r3 set2 set3
(integer) 5
127.0.0.1:6379> smembers r3
1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
Set类型使用场景:跟踪一些唯一性数据,用于维护数据对象之间的关联关系
5)、Sorted-set类型
Sorted-Set和Set的区别:Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-set常用命令:添加元素、获得元素、删除元素、范围查询、扩展命令
zadd 添加元素 里面包括评分和值
我们添加集合sort1 元素是a,b,c 评分分别是5,4,6
集合里的排序是根据评分从小到大排序的
127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3
zrange是查找元素 -1代表是最后一个
127.0.0.1:6379> zrange sort1 0 -1
1) "b"
2) "a"
3) "c"
我们继续添加元素
1.假如此元素集合里面已经有了,则覆盖
我们继续添加b 此时评分改成7
127.0.0.1:6379> zadd sort1 7 b
(integer) 0
通过zscore 获取b的评分
127.0.0.1:6379> zscore sort1 b
"7"
发现已经修改了
2.添加的元素不在集合里,则添加进去
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
删除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "d"
zcard 查看集合里的元素个数
127.0.0.1:6379> zcard sort1
(integer) 3
withscores 把评分也显示出来
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"
zrevrange 降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"
我们再加两个元素
127.0.0.1:6379> zadd sort1 10 e 5 f
(integer) 2
zremrangebyrank 根据排名来删除元素 删除3个
127.0.0.1:6379> zremrangebyrank sort1 0 2
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
再添加元素
127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
5) "f"
6) "11"
7) "g"
8) "16"
9) "h"
10) "18"
zremrangebyscore 根据具体评分范围来删除元素
127.0.0.1:6379> zremrangebyscore sort1 10 16
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
再添加元素
127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
5) "i"
6) "20"
7) "j"
8) "23"
9) "k"
10) "30"
zrangebyscore 根据评分范围来查找元素
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores
1) "h"
2) "18"
3) "i"
4) "20"
5) "j"
6) "23"
limit 限定查找起始 类似分页
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
1) "h"
2) "18"
3) "i"
4) "20"
zincrby 给指定元素加分
127.0.0.1:6379> zincrby sort1 5 h
"23"
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "i"
4) "20"
5) "h"
6) "23"
7) "j"
8) "23"
9) "k"
10) "30"
zcount 查找指定评分范围的元素个数
127.0.0.1:6379> zcount sort1 20 23
(integer) 3
Sorted-Set使用场景:大型在线游戏积分排行榜,构建索引数据
4、Redis 之 Keys 通用操作
keys * 显示所有key
127.0.0.1:6379> keys *
1) "sort1"
2) "l2"
3) "set2"
4) "r1"
5) "h1"
6) "n2"
7) "l3"
8) "r2"
9) "s1"
10) "set3"
11) "set1"
12) "r3"
13) "n"
14) "n3"
15) "nn"
16) "l1"
查找所有以s开头的key,用s 代表任意字符
127.0.0.1:6379> keys s*
1) "sort1"
2) "set2"
3) "s1"
4) "set3"
5) "set1"
查找所有s开头 后面紧跟任意一个字符的key
127.0.0.1:6379> keys s?
1) "s1"
del删除key
127.0.0.1:6379> del n2 n3 nn
(integer) 3
exists判断key是否存在 1表示存在 0表示不存在
127.0.0.1:6379> exists n2
(integer) 0
127.0.0.1:6379> exists l1
(integer) 1
get获取元素
127.0.0.1:6379> get n
"1"
rename对key重命名
127.0.0.1:6379> rename n n2
OK
127.0.0.1:6379> get n
(nil)
127.0.0.1:6379> get n2
"1"
expire 设置n2 有效时间
127.0.0.1:6379> expire n2 120
(integer) 1
ttl查看剩余时间
127.0.0.1:6379> ttl n2
(integer) 116
type显示类型
127.0.0.1:6379> type n2
string
127.0.0.1:6379> type l1
list
127.0.0.1:6379> type s1
string
127.0.0.1:6379> type sort1
zset
5、使用可视化工具连接 Redis
1)、配置redis
我们配置下防火墙 开一个6379端口权限
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
我们配置下 redis配置文件
[root@localhost redis]# vi /usr/local/redis/redis.conf
这里绑定了本机,我们把这个备注掉;
# bind 127.0.0.1
配置完后重新启动redis
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# ./bin/redis-cli shutdown
[root@localhost redis]# ./bin/redis-server ./redis.conf
远程连接redis时redis自我保护拒绝访问,配置允许远程访问
最好的办法设置密码
进入客户端,设置密码 123456
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> config set requirepass 123456
退出客户端
127.0.0.1:6379> quit
进入到客户端
[root@localhost redis]# ./bin/redis-cli
输入密码登录
127.0.0.1:6379> auth 123456
OK
2)、安装可视化工具
我们用的redis的可视化工具为:
双击安装软件进行安装;安装步骤很简单,下一步---->完成即可,步骤省略掉
打开安装好的可视化工具界面为:
链接到redis,如图所示:
6、使用 Jedis 连接 Redis
1)、Jedis简介
实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis,
对于主流语言,Redis都提供了对应的客户端
Redis客户端官网地址:https://redis.io/clients
Redis的java客户端官网地址:https://redis.io/clients#java
提供了很多客户端 官方推荐的是Jedis 托管地址:https://github.com/xetorthio/jedis
2)、Jedis案例
建一个Maven项目:jedis_demo 01,步骤省略掉
加入Jedis的客户端maven坐标依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
创建普通JedisTest链接测试类
/**
* Jedis测试类
*/
public class JedisTest {
@Test
public void test01(){
Jedis jedis=new Jedis("192.168.1.104",6379); // 创建客户端 设置IP和端口
jedis.auth("123456"); // 设置密码
jedis.set("stuName", "张三"); // 设置值
String value=jedis.get("stuName"); // 获取值
System.out.println(value);
jedis.close(); // 释放连接资源
}
}
测试结果如下:
创建JedisPoolTest连接池测试类
/**
* Jedis连接池测试类
*/
public class JedisPoolTest {
@Test
public void test01(){
//进行Jedis连接池相关配置
JedisPoolConfig config=new JedisPoolConfig(); // 连接池的配置对象
config.setMaxTotal(100); // 设置最大连接数
config.setMaxIdle(10); // 设置最大空闲连接数
//创建Jedis连接池对象
JedisPool jedisPool=new JedisPool(config,"192.168.1.104",6379);
//定义Jedis链接对象
Jedis jedis=null;
try{
jedis=jedisPool.getResource(); // 获取连接
jedis.auth("123456"); // 设置密码
jedis.set("teaName", "李四"); // 设置值
String value=jedis.get("teaName"); // 获取值
System.out.println(value);
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭Jedis链接对象
if(jedis!=null){
jedis.close();
}
//关闭Jedis链接池对象
if(jedisPool!=null){
jedisPool.close();
}
}
}
}
测试结果如下:
三、总结
Redis 简介和 安装
Redis 数据类型介绍
Redis 之 Keys 通用操作
使用可视化工具连接 Redis
使用 Jedis 连接 Redis