redis
Redis
为什么使用redis??
1.1 NoSQL: not only sql
为什么有NOSql: 互联网项目:特点: 数据库高并发读写,海量数据高效率存储,可扩展
NOSQL主流:
键值对(redis),列式存储,文档类型,图形数据库
NoSql特点:
特点: 数据库高并发读写,海量数据高效率存储,可扩展
1.2 Redis简介
什么是实时系统: 瞬时可以实现某些数据的统计或者是功能的实现
*_Redis由来:
*_什么是redis?
由C语言实现的直接操作内存的开源的高性能的数据库软件
*_redis应用场景
1.3 安装redis
redis安装包: 源码形式提供 .c文件
将.c编译为.o文件 需要安装: gcc
将编译后的文件安装在linux系统上
等价于 希望在当前的系统安装JAVA版本的QQ,下载到的安装文件以.java源码形式提供.
需要:1_下载GCC 在系统上有JDK(GCC),
2_编译: 通过JDK将源码编译为字节码
3_安装: 将字节码进行打包设置 .bat
1_获取安装包 redis-3.0.7.tar.gz
2_利用filezilla.exe 将安装包上传到/root/
3_cd /root/ ___> tar -zxvf redis-3.0.7.tar.gz
4_编译 将源码翻译为.o文件
cd /root/redis-3.0.7 ___> make
5_创建一个目录 /usr/loca/src/redis (安装目录)
6_安装reids
cd /root/redis-3.0.7
make PREFIX=/usr/local/src/redis install
7_ 由于redis启动需要一个配置文件,将配置文件复制到 /root/redis/
cp /root/redis-3.0.7/redis.conf /root/redis
(用后端显示 不然不好操作)
8_ 修改/usr/local/src/redis/redis.conf
9_ 启动服务端 ./bin/redis-server ./redis.conf (后台启动)
10_启动客户端 ./bin/redis-cli
11_测试redis是否正确安装成功
向服务器发送 ping 命令,服务器返回 pong
向服务器发送 set name tom
get name 命令可以看到可以获取到tom的信息
向服务器发送keys *
可以查看服务器中一共有多少键值对的数据,可以查看到各个键值类型数据
想看其他的也可以访问 http://www.runoob.com/redis/redis-data-types.html
第1章 Redis操作5种数据类型
传统的关系型数据库支持的数据类型:字符串,数字,时间日期,其他
Redis支持的5种数据类型: 字符串,哈希,字符串列表,字符串集合,有序字符串集合
redis的数据结构
1.1Redis操作字符串
set name tom
get name
set name mary
get name
getset name smith
get name
del name
get name
incr num01
decr num01
incrby num01 33
decrby num01 33
append num01 abc
1.2 Redis操作哈希类型数据
hset myhash01 name tom
hset myhash01 age 18
hget myhash01 name
hget myhash01 age
hmset myhash02 name lucy age 18 m:multiple:多个的
hmget myhash02 name age
hgetall myhash02
hdel myhash02 name age
del myhash02
hincrby myhash02 age
hexists myhash02 username
hlen myhash02
hkeys myhash02
hvals myhash02
哈希 hash(里面还有一个键值对)
1.3 Redis操作列表类型数据
*_ArrayList和LinkedList特点回顾:
*_双线链表中添加数据
*_双线链表中移除数据
*_核心命令
PS:redis中的列表有头尾,约定:左头右尾
lpush mylist01 1 2 3
lpush mylist01 1 2 3
rpush mylist02 a b c d
rpush mylist02 1 2 3
lrange mylist01 0 -3 (左边以0开始往下 右边以-1开始往上)
lrange mylist01 0 -1
lpop mylist01
rpop mylist01
llen mylist01
lpushx mylist01 33
lpushx mylist03 ff
rpushx mylist01 44
rpushx mylist03 44
lpush mylist03 1 2 3 1 2 3 1 2 3
lrem mylist03 2 3
lrem mylist03 -2 1
lrem mylist03 0 2
lset mylist03 3 444
linsert mylist03 before b 11
linsert mylist03 after b 22
lpush mylist05 1 2 3
lpush mylist06 a b c
rpoplpush mylist05 mylist06
rpoplpush mylist06 mylist06
PS:rpoplpush的使用场景
1.4 Redis操作set类型数据
sadd myset01 a b c
sadd myset01 a
srem myset01 a b
smembers myset01
sismember myset01 a
sadd mya1 a b c
sadd myb1 a c 1 2
sdiff mya1 myb1
sadd mya2 a b c
sadd myb2 a c 1 2
sinter mya2 myb2
sadd mya3 a b c
sadd myb3 a c 1 2
sunion mya3 myb3
scard myset01
sranmember myset01
sdiffstore my1 mya1 myb1
sinterstore my1 mya2 myb2
sunionstore my1 mya3 myb3
1.5 Redis操作sortedset类型数据
zadd mysort01 70 zhangsan 80 lisi 90 wangwu
zadd mysort01 100 zhangsan
zadd mysort01 50 jack
zscore mysort01 zhangsan(得到张三的score)
zcard mysort01 (返回这个数据的大小 )
zrem mysort01 zhangsan lisi
zrange mysort01 0 -1
zrange mysort01 0 -1 withscores
zrevrange mysort01 0 -1 withscores
zremrangebyrank mysort01 0 4
zremrangebyscore mysort01 50 80
zrangebyscores mysort01 0 100 withscores
zrangebyscores mysort01 0 100 withscores limit 0 2
Redis干什么的?
llen mylist01
zcard mysort01
1.6 Keys的通用操作
keys *
keys my?
del myname
exists myname
rename myname name
expire myname 1000
ttl myname
type mystring string
type mylist list
type myset zset
type mysort sort
type myhash hash
type myzzz none
5种数据类型操作: 知道做了哪些事情?内存分布情况,命令依次敲一遍
Keys通用操作
Java操作Redis
第2章 Redis特性
2.1 多数据库支持
Redis支持多个数据仓库(16)
选中第0号仓库: select 0
选中第1号仓库: select 1
选中第15号仓库: select 15
将当前仓库下的某个键值对的数据移动到其他仓库:move name 1
2.2 服务器自学命令
测试连接是否存活: ping
打印内容: echo zhangsi (System.out.println(“DDDDD”)?
退出当前的redis连接:quit
测试当前仓库中有多少个键值对:dbsize
清除当前仓库:flushdb
清除所有的仓库:flushall execute .exe
2.3 消息订阅和发布
应用场景:类似于游戏中的在指定频道中发布消息
我们利用CRT打开3个窗口
窗口1中通过输入:subscribe mychat 订阅一个名称为mychat的频道
窗口2中通过输入:publish mychat ‘111’在频道mychat中发布消息111
窗口3中通过输入:psubscribe my* 批量订阅以my开头的频道
窗口2中通过输入:
publish mychat ‘333’ 在频道mychat和my频道中发布消息
Publish mychat02 ‘444’ 在频道my中发布消息
关于消息订阅和发布,我们只需要看到上课演示的效果即可,具体更加详细的用法需要在
后续项目中来逐步实现.
2.4 事务的支持
1_redis中通过multi/exec/discard命令来解决开发中遇到的事务问题
2_Redis事务特点
3_对事务的掌握程度,我们只需要可以模仿上课的操作步骤,实现并且看到具体效果为准.
数据库要求:
1_通过JDBC,Jedis将数据存入仓库,从仓库中获取数据,删除/更新仓库的数据
2_sql语句编写(多表查询)
3_sql语句优化 select stuNum,stuName,stuAge,stuSex from stu;
重点:
操作5中数据类型
Keys通用操作
jedis