Redis

一.NoSQL的概念

SQL:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
NoSQL:最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

二.非关系型的数据库

1.非关系型数据库分类

(1)键值(key-value):Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB:Cassandra, HBase, Riak
(2)列存储数据库:Cassandra, HBase, Riak
(3)文档型数据库:CouchDB, MongoDb
(4)图形(Graph)数据库:Neo4J, InfoGrid, Infinite Graph

2.redis和memcache的比较

mysqlredismemcached
类型关系型非关系型非关系型
存储位置磁盘磁盘和内存内存
存储过期不支持支持支持
读写性能非常高非常高
存储的结构表来存储支持很多 list/set/array/string/map等普通键值对key-value

三.redis的使用场景

(1) 最多, 就是缓存(cache 使用空间换取时间)
(2) 计数器应用 – 微博 热点新闻 – 转载 点赞(高并发)
(3) 实时防攻击系统 – 银行网站 (登录) --计数 (ip 同一个ip + 5)
​ redis–支持断电恢复 内存和磁盘
(4) 有效期的应用 – 道具 红包 优惠券 …
(5) 支持无序的场景 – set特效
(6) 队列 -->quene -->秒杀 抢购 --redis
(7) 消息系统订阅发布 -->redis(MQ消息队列–高并发 秒杀 抢购 转发 )

四.安装redis

步骤:

1.官网下载
http://redis.io/download
2.解压文件夹
3.启动redis服务
redis-server.exe
4.连接到redis进行操作

五.redis的操作

操作手册:百度,官方api
注意:操作均不能使用中文输入法

1.字符串操作

set key value:给字段设置值
get key:获取字段的值
mset:同时设置几个字段
mget:同时获取几个字段的值
incr:自增1
decr:自减1
incrBy key num:增加num个
decrBy key num:减少num个

2.对key的操作

keys *:查看所有的key
expire key seconds:对key设置过期时间
ttl key:查看key 剩余时间
del key:删除key
flushall:清库 (0-15个)
flushdb:清当前库
select index:选择库

3.对list操作

lpush(rpush) key value1/value2… :往list添加值
lpop(rpop) key:弹出一个值
lrange key start stop:搜索查询 lrange students 0 -1
lrem key count value:移出
lindex key index:查看索引对应的值
ltrim key start stop:对集合进行修剪

4.set操作

sadd key members:添加值
srem key member:删除值
smembers key:查看可以对应的值

5.hash操作

hset key name value :设置key value
hget key name:通过key获取值
hmset key name1 key1 name2 key2:批量设置
hmget key name1 name2:批量获取
hkeys:获取所有的key
hvals:获取所有的value
hgetall:获取所有的key和value
使用比较多的结构:
==string /list /map(hash) ===/set

六.事务操作

弱事务: 如果只有一个成功就可以保存(没什么用) – 日志
强事务: 同生共死

七.订阅发布

八.设置密码

1.配置文件

redis.windows.conf
–添加 requirepass 123456

2.启动的时候

运行命令设置
redis-server.exe redis.windows.conf

3.auth 123456

九.通过java操作redis(掌握)

连接redis服务: new Jedist(ip,host,timeout)

//本机,端口号,过期时间
Jedis jedis = new Jedis("127.0.0.1", 6379, 1000*10);

连接池操作redis: new JedisPool(config,ip,host,timeout,password)

//配置连接池
JedisPool jedisPool = new JedisPool(config,"127.0.0.1", 6379, 1000*10,"123456");

1.字符串操作

//增
jedis.set("name","王天霸");
//查
System.out.println(jedis.get("name"));
//查询所有
System.out.println(jedis.keys("*"));
//删
System.out.println(jedis.del("name"));
//改
System.out.println(jedis.set("name","龙傲天"));

2.list操作

//有序可重复
//插入头部
jedis.lpush("users","悟空","悟能","悟净","白龙马","悟能");
//移除表中所有与 VALUE 相等的值
jedis.lrem("users",0,"悟能");
//取出全部
System.out.println(jedis.lrange("users", 0, -1));

3.set操作

//无序不重复
jedis.flushDB();
jedis.sadd("users","悟空","悟能","悟净","白龙马","悟能");
System.out.println(jedis.smembers("users"));

4.hash操作

jedis.hset("userMap","user","江流儿");
System.out.println(jedis.hget("userMap", "user"));

5.排序

jedis.lpush("nums","51","27","38","82","15");
System.out.println(jedis.lrange("nums", 0, -1));
//升序
System.out.println(jedis.sort("nums"));
//排序规则
SortingParams sortingParams = new SortingParams();
//设置为降序
sortingParams.desc();
//加入规则
System.out.println(jedis.sort("nums",sortingParams));

6.事务

jedis.set("name","叶良辰");
jedis.set("age","23");
//开启事务
Transactiontransaction = jedis.multi();
transaction.incr("name");
transaction.incr("age");
List<Object> list = transaction.exec();
System.out.println(list);

十.redis持久化

持久化: 把数据保存到磁盘的这个过程就叫持久化。
redis支持内存磁盘存储。
redis磁盘存储提供两种方案:
rdb方式 :
save 1 1 最快的保存方法 1s中 发生一次变化 – 如果保存数据 1s内完成 – 数据丢失 丢失1s数据
aof方式:
开启appendonly yes
在操作的时候,把数据写到日志文件,在启动的时候,恢复日志文件 -->日志方式

十一.redis的淘汰策略

lru : 最近最少使用 – 常用 (统计次数)
ttl : 将要过期中淘汰 --也可以 (统计时间)
random: 随机数据 --这个数据就没有那么重要 (随机)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值