redis学习

redis

学习官网redis中文网

一、概念 :

redis是nosql系列的一款高性能非关系型数据库

Redis支持的键值数据类型:字符串类型 String

哈徐类型 hash

列表类型 list

集合类型 set

有序集合类型 sortedset

经常查询一些一些不大经常发生变化的数据

缓存思想:1、从缓存中获取数据----(1)有数据直接返回。(2)没有数据、从数据库中查询,将数据放入缓存中,返回数据


主流nosql产品:

(1)键值对(key-Value)存储数据库

产品:Tokyo、Cabinet/Tyrant、redis、、

典型应用:内容缓存、主要用于处理大量数据的高访问负载

数据模型:一系列键值对

优势:快速查询

劣势:存储的数据缺少结构化

(2)列存储数据库

产品:Cassandea、Hbase、Riak

典型应用:分布式的文件系统

数据模型:以列簇式存储、将同一列数据存放在一起

优势:查找速度快、可拓展性强、更容易进行分布式拓展

劣势:功能相对局限

(3)文档型数据库

产品:MongDB、CouchDB

典型应用:web应用(与key-value类似,value是结构化的)

数据模型:一系列键值对

优势:数据结构要求不严格

劣势:查询性能不高,而且缺乏统一的查询语法

(4)图形(graph)数据库

产品:Noe4j、Infogrid、Infinite Graph

典型应用:社交网络

数据模型:图结构

优势:利用图结构相关算法

劣势:需要对整个图做计算才能得出结果,不容易做出分布式的集群方案


二、下载安装

redis.windows.conf :配置文件

redis-cli.exe :redis的客户端

Redis-server.exe :redis的服务器端

三、使用redis俩种方式(命令操作、java代码)

1、数redis的数据结构

Redis存储的是:key,value格式的数据 其中key都是字符串,value有五种不同的数据结构:字符串类型 String

哈希类型 hash:map格式

列表类型 list : linkedlist格式

集合类型 set: hashSet格式

有序集合类型 sortedset :

2、命令形式

1*哈希类型 hash

(1)存储: hset key field value

(2)获取指定的field: hget key field

(3)获取所有的 field:hgetAll key

(4)删除: hdel key field

2*字符串类型 String

(5)存储:set key value

(6)获取: get key

(7)删除: del key

3*列表类型 list:可以添加一个元素列表到头部(左边)或者尾部(右边)重复

(8)添加:lpush  key value :将元素加入列表的左边 rpush Key value:将元素加到右边

(9)获取: lrange key start  end:范围获取  

(10)删除: lpop key :删除列表最左边的元素,并将元素返回

rpop key : 删除元素最右边的元素,并将元素返回

4*集合类型 set :不允许重复元素

(11)存储:sadd key value

(12)获取:smembers key 获取set 集合中所有元素

(13)删除 :srem key value: 删除集合中某个元素

5*有序集合类型 sortefset:不允许重复元素、且元素有序

(14)存储:zadd key score value

(15)获取:zrange key  start  end

(16)删除 :srem key value

6*通用命令

1、keys  * 查询所有键

2、Type key:获取键对应value类型

3、del key:删除指定key value

四、持久化操作说

1、redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失

2、持久化机制

1*RDB:默认方式,不需要进行配置就可以使用这种机制。

在一定的间隔时间内,检测key的变化情况,然后持久化数据(性能影响较低)


(1)编辑redis.windows.conf文件

2*ADF:日志记录的方式,可以记录灭一条命令的操作,可以每一次命令操作后,持久化数据。

(1)编辑redis.windows.conf文件


五、Java操作redis

1、jedis:一款java操作redis数据库的工具

2、使用步骤:

(1)下载jedis的jar包

(2)使用:

//1、打开连接Jedis jedis=new Jedis("localhost",6379);

//字符串jedis.set("name","李青华");

jedis.set("pwd","123");

jedis.set("old","23");

jedis.set("sexs","男");

jedis.set("sexs","男");

//哈希jedis.hset("customer","uasername","李青华");

jedis.hset("customer","age","23");

jedis.hset("customer","sex","男");

jedis.hset("custoemr","pwd","123");

jedis.hset("customer","pwd","123");

//列表listjedis.lpush("student","李青华");

jedis.lpush("student","李青华");

jedis.rpush("student","123");

jedis.rpush("student","男");

jedis.rpush("student","23");

//集合setjedis.sadd("scustomer","李青华");

jedis.sadd("scustomer","23");

jedis.sadd("scustomer","123");

jedis.sadd("scustomer","男");

jedis.sadd("scustoemr","男");

//有序集合sortedSetjedis.zadd("zcustoemr",1,"李青华");

jedis.zadd("zcustoemr",2,"123");

jedis.zadd("zcustoemr",3,"李青华");

jedis.zadd("zcustoemr",4,"男");

jedis.zadd("zcustoemr",1,"23");

jedis.close();


六、 Jedis连接池

JedisPool

1、使用

1*创建JedisPool连接池对象

2*调用方法getResource()获取Jedis连接


注意:使用redis缓存一些不经常发生改变的数据。


*数据库中的数据一旦发生改变,则需要更新缓存。数据库的表执行增删改相关操作,需要将redis缓存数据清空,再次存入。

*在service对应的增删改方法中将redis数据删除。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容