Reids框架NO_SQL非关系数据库的一些简单应用
来源:互联网 发布:人工智能与伦理道德 编辑:程序博客网 时间:2024/06/11 18:00
#Redis
目的:利用Redis做数据缓存,缓存查询出来的对象数据。
NoSQL:Not Only SQL,非关系数据库。
关系型数据库指的是表结构存储,典型Oracle、MySQL、DB2。
一般应用:
- key-value存储 : 典型Redis
- 列存储 : HBase
- 文档存储 : MongoDB
- 图形存户:Neo4j
## 简介
- Redis是基于内存的数据库,常用于缓存
- Redis是采用C语言编写
- Redis是采用Key-value结构存储
- Redis中value值支持存储类型为字符串、哈希、列表、集合、可排序集合
- Redis支持高速读写操作,效率高
- Redis支持持久化、按一定策略将内存数据异步保存到磁盘
- Redis支持事务控制、消息传递等功能
##各种类型数据存储命令
1. 字符串操作(string)
![](https://i.imgur.com/9sJtYCB.png)
- set key value //存一组key value
- mset key value key value //存多组key value
- get key //获取value
- strlen key //获取value字符长度
- incr key //将value加1
- incrby key number //将value加number
- decr key //将value减1
- decrby key number //将value减number
- append key value1 //将value拼接value1
2. key操作
- keys * //查看有哪些key
- del key //删除key
- expire key n //设置key有效期为n秒
- rename key newkey //修改key名字
- type key //返回value值得类型
- exists key //判断key是否存在
3. 哈希操作 (hashmap)
![](https://i.imgur.com/3ROwSOy.png)
- hset key 字段名 字段值 //设置一个字段名和字段值
- hmset key 字段名1 字段值1 字段名2 字段值2 //设置多个
- hget key 字段名 //获取一个字段值
- hmget key 字段名1 字段名2 //获取多个字段值
- hlen key //获取字段数量
- hkeys key //获取字段名
- hdel key 字段名 //删除某个字段
4. 列表操作 (list)
![](https://i.imgur.com/ZGLumMQ.png)
- lpush key value //在列表头部插入一个元素
- rpush key value //在列表尾部插入一个元素
- lrange key 0 -1 //获取列表所有元素
- llen key //获取列表元素数量
- lrem key count value //删除列表指定数量的元素
- lset key index value //更新某个索引位置的元素
- lindex key index //获取指定索引位置的元素
- lpop key //删除列表头部第一个元素
- rpop key //删除列表尾部最后一个元素
- linsert key BEFROE|AFTER value newvalue //在列表value元素前或后插入newvalue值
5. 集合操作 (set)
A = {1,3,5}
B = {3,5,7,9}
A交B = {3,5}
A并B = {1,3,5,7,9}
A差B = {1}
B差A = {7,9}
- sadd key value value //向集合存数据
- smembers key //获取集合所有元素
- scard key //获取集合元素数量
- srem key value //删除value元素
- spop key //随机删除一个元素
- srandmember key n //随机返回n个元素
- sdiff key1 key2 //key1和key2集合的差集
- sinter key1 key2 //key1和key2集合交集
- sunion key1 key2 //key1和key2集合并集
- sdiffstore key key1 key2 //key1和key2集合的差集,结果存放到key集合中
6. 有序集合操作
排序规则:给每个元素配一个double分值,按分值排序,默认由小到大排序。
- zadd key score value score value //添加元素
- zcard key //获取元素数量
- zrange key 0 n //获取指定索引范围的元素,0 -1表示所有元素(由小到大排序)。
- zrevrange key 0 n//根据score由大到小排序,获取指定索引的元素
- zrem key value //删除某个元素
- zscore key value //返回元素的分值
- zrank key value //获取元素索引位置(由小到大排序)
- zrevrank key value //获取元素索引位置(由大到小排序)
- zcount key min max //统计分值在min和max之间的元素数量
7. 其他
##Java如何操作Redis存取数据
连接Redis
@Test//测试连接
public void test1(){
}
字符串写操作
public void test2_1(){
long i = 10000L;
Jedis jedis = new Jedis("localhost");
jedis.set("i", i+"");
jedis.set("msg1", "Hello Redis");
jedis.set("msg2".getBytes(), "你好 Redis".getBytes());
jedis.close();
}
字符串读操作
public void test2_2(){
Jedis jedis = new Jedis("localhost");
String str = jedis.get("msg1");
byte[] bts = jedis.get("msg2".getBytes());
long i = Long.parseLong(jedis.get("i"));
String str2 = new String(bts);
System.out.println(str);
System.out.println(str2);
jedis.close();
}
**其他类型存取操作请参考课上示例代码**
##Java如何利用Redis做缓存
1. 对象存取方案
- 将Java对象转成json字符串然后写入redis,取值时将json串转成Java对象
@Test//写对象
public void test1(){
User user = new User();
user.setId(10);
user.setName("scott");
user.setPassword("123");
//写对象
Jedis jedis = new Jedis("localhost");
Gson gson = new Gson();
String s = gson.toJson(user);
jedis.set("user_"+user.getId(), s);
jedis.close();
}
@Test//读对象
public void test2(){
int id = 10;
Jedis jedis = new Jedis("localhost");
String s = jedis.get("user_"+id);
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
System.out.println(user.getId()+" "+user.getName());
jedis.close();
}
- 将Java对象序列化成字节数组然后写入redis,取值时反序列化成Java对象
@Test//写对象
public void test3(){
User user = new User();
user.setId(10);
user.setName("scott");
user.setPassword("123");
//写对象
Jedis jedis = new Jedis("localhost");
//序列化
byte[] value = SerializableUtil.serialize(user);
jedis.set("user_10".getBytes(), value);
jedis.close();
}
@Test//读对象
public void test4(){
int id = 10;
String key = "user_"+id;
Jedis jedis = new Jedis("localhost");
byte[] value = jedis.get(key.getBytes());
//反序列化
User user = (User)SerializableUtil.unserialize(value);
System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());
jedis.close();
}
目的:利用Redis做数据缓存,缓存查询出来的对象数据。
NoSQL:Not Only SQL,非关系数据库。
关系型数据库指的是表结构存储,典型Oracle、MySQL、DB2。
一般应用:
- key-value存储 : 典型Redis
- 列存储 : HBase
- 文档存储 : MongoDB
- 图形存户:Neo4j
## 简介
- Redis是基于内存的数据库,常用于缓存
- Redis是采用C语言编写
- Redis是采用Key-value结构存储
- Redis中value值支持存储类型为字符串、哈希、列表、集合、可排序集合
- Redis支持高速读写操作,效率高
- Redis支持持久化、按一定策略将内存数据异步保存到磁盘
- Redis支持事务控制、消息传递等功能
##各种类型数据存储命令
1. 字符串操作(string)
![](https://i.imgur.com/9sJtYCB.png)
- set key value //存一组key value
- mset key value key value //存多组key value
- get key //获取value
- strlen key //获取value字符长度
- incr key //将value加1
- incrby key number //将value加number
- decr key //将value减1
- decrby key number //将value减number
- append key value1 //将value拼接value1
2. key操作
- keys * //查看有哪些key
- del key //删除key
- expire key n //设置key有效期为n秒
- rename key newkey //修改key名字
- type key //返回value值得类型
- exists key //判断key是否存在
3. 哈希操作 (hashmap)
![](https://i.imgur.com/3ROwSOy.png)
- hset key 字段名 字段值 //设置一个字段名和字段值
- hmset key 字段名1 字段值1 字段名2 字段值2 //设置多个
- hget key 字段名 //获取一个字段值
- hmget key 字段名1 字段名2 //获取多个字段值
- hlen key //获取字段数量
- hkeys key //获取字段名
- hdel key 字段名 //删除某个字段
4. 列表操作 (list)
![](https://i.imgur.com/ZGLumMQ.png)
- lpush key value //在列表头部插入一个元素
- rpush key value //在列表尾部插入一个元素
- lrange key 0 -1 //获取列表所有元素
- llen key //获取列表元素数量
- lrem key count value //删除列表指定数量的元素
- lset key index value //更新某个索引位置的元素
- lindex key index //获取指定索引位置的元素
- lpop key //删除列表头部第一个元素
- rpop key //删除列表尾部最后一个元素
- linsert key BEFROE|AFTER value newvalue //在列表value元素前或后插入newvalue值
5. 集合操作 (set)
A = {1,3,5}
B = {3,5,7,9}
A交B = {3,5}
A并B = {1,3,5,7,9}
A差B = {1}
B差A = {7,9}
- sadd key value value //向集合存数据
- smembers key //获取集合所有元素
- scard key //获取集合元素数量
- srem key value //删除value元素
- spop key //随机删除一个元素
- srandmember key n //随机返回n个元素
- sdiff key1 key2 //key1和key2集合的差集
- sinter key1 key2 //key1和key2集合交集
- sunion key1 key2 //key1和key2集合并集
- sdiffstore key key1 key2 //key1和key2集合的差集,结果存放到key集合中
6. 有序集合操作
排序规则:给每个元素配一个double分值,按分值排序,默认由小到大排序。
- zadd key score value score value //添加元素
- zcard key //获取元素数量
- zrange key 0 n //获取指定索引范围的元素,0 -1表示所有元素(由小到大排序)。
- zrevrange key 0 n//根据score由大到小排序,获取指定索引的元素
- zrem key value //删除某个元素
- zscore key value //返回元素的分值
- zrank key value //获取元素索引位置(由小到大排序)
- zrevrank key value //获取元素索引位置(由大到小排序)
- zcount key min max //统计分值在min和max之间的元素数量
7. 其他
##Java如何操作Redis存取数据
连接Redis
@Test//测试连接
public void test1(){
Jedis jedis = new Jedis("localhost");
//打印出PONG即为连接正常
System.out.println(jedis.ping());}
字符串写操作
public void test2_1(){
long i = 10000L;
Jedis jedis = new Jedis("localhost");
jedis.set("i", i+"");
jedis.set("msg1", "Hello Redis");
jedis.set("msg2".getBytes(), "你好 Redis".getBytes());
jedis.close();
}
字符串读操作
public void test2_2(){
Jedis jedis = new Jedis("localhost");
String str = jedis.get("msg1");
byte[] bts = jedis.get("msg2".getBytes());
long i = Long.parseLong(jedis.get("i"));
String str2 = new String(bts);
System.out.println(str);
System.out.println(str2);
jedis.close();
}
**其他类型存取操作请参考课上示例代码**
##Java如何利用Redis做缓存
1. 对象存取方案
- 将Java对象转成json字符串然后写入redis,取值时将json串转成Java对象
@Test//写对象
public void test1(){
User user = new User();
user.setId(10);
user.setName("scott");
user.setPassword("123");
//写对象
Jedis jedis = new Jedis("localhost");
Gson gson = new Gson();
String s = gson.toJson(user);
jedis.set("user_"+user.getId(), s);
jedis.close();
}
@Test//读对象
public void test2(){
int id = 10;
Jedis jedis = new Jedis("localhost");
String s = jedis.get("user_"+id);
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
System.out.println(user.getId()+" "+user.getName());
jedis.close();
}
- 将Java对象序列化成字节数组然后写入redis,取值时反序列化成Java对象
@Test//写对象
public void test3(){
User user = new User();
user.setId(10);
user.setName("scott");
user.setPassword("123");
//写对象
Jedis jedis = new Jedis("localhost");
//序列化
byte[] value = SerializableUtil.serialize(user);
jedis.set("user_10".getBytes(), value);
jedis.close();
}
@Test//读对象
public void test4(){
int id = 10;
String key = "user_"+id;
Jedis jedis = new Jedis("localhost");
byte[] value = jedis.get(key.getBytes());
//反序列化
User user = (User)SerializableUtil.unserialize(value);
System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());
jedis.close();
}
阅读全文
0 0
- Reids框架NO_SQL非关系数据库的一些简单应用
- 常见的几个NO_SQL数据库
- Reids的简单使用
- 非关系数据库简单尝试
- java 对reids的操作 切片与非切片连接池的应用
- java 对reids的操作 切片与非切片连接池的应用
- 关系与非关系数据库的比较
- Cobar分布式关系型数据库中间件的简单应用
- 关于SSS框架,是对于非关系型的数据库MongoDB
- 关系数据库 非关系数据库
- 一些简单的应用
- 关系型数据库与非关系型数据库的区别?
- 关系型数据库与非关系型数据库的区别?
- 关系型数据库和非关系数据库的优缺点
- 关系型数据库和非关系型数据库的区别
- 关系型数据库与非关系型数据库的区别
- 关系型数据库和非关系型数据库的区别
- 非关系型数据库和关系型数据库的区别??
- nyoj 860又见01背包(01背包)
- LeetCode--Container With Most Water
- ros操作系统的介绍
- solr中同义词配置 (Synonyms)
- Xpath+第一节
- Reids框架NO_SQL非关系数据库的一些简单应用
- 字符串 数组 元组 字典
- ubuntu安装svn插件(subclipse)缺少javaHL问题解决
- Java基础---数组
- json
- 华为机试之字符个数统计
- 函数
- 流程控制
- Tarjan求强联通分量以及Tarjan O(m+n)求LCA