设计网站软件开发唐山企业建网站

当前位置: 首页 > news >正文

设计网站软件开发,唐山企业建网站,做网站开发工资怎样,科技公司网站设今日内容

  1. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redis Redis

  2. 概念#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL)#xff0c;意即“不仅仅是SQL”#xff0c;是…今日内容

  3. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redis Redis

  4. 概念 redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL)意即“不仅仅是SQL”是一项全新的数据库理念泛指非关系型的数据库。比如 redis   HBase MongodDB  随着互联网web2.0网站的兴起传统的关系数据库在应付web2.0网站特别是超大规模和高并发的的web2.0纯动态网站已经显得力不从心暴露了很多难以克服的问题而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战尤其是大数据应用难题。 ​1.1.1. NOSQL和关系型数据库比较优点1成本nosql数据库简单易部署基本都是开源软件不需要像使用oracle那样花费大量成本购买使用相比关系型数据库价格便宜。2查询速度nosql数据库将数据存储于缓存之中关系型数据库将数据存储在硬盘中自然查询速度远不及nosql数据库。3存储数据的格式nosql的存储格式是key,value形式、文档形式、图片形式等等所以可以存储基础类型以及对象或者是集合等各种格式而数据库则只支持基础类型。4扩展性关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。 ​缺点1维护的工具和资料有限因为nosql是属于新的技术不能和关系型数据库10几年的技术同日而语。2不提供关系型数据库对事务的处理。不提供对sql的支持如果不支持sql这样的工业标准将产生一定用户的学习和使用成本。 ​1.1.2. 非关系型数据库的优势1性能NOSQL是基于键值对的可以想象成表中的主键和值的对应关系而且不需要经过SQL层的解析所以性能非常高。2可扩展性同样也是因为基于键值对数据之间没有耦合性所以非常容易水平扩展。 ​1.1.3. 关系型数据库的优势1复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。2事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库对方的优势就是自己的弱势反之亦然。 ​1.1.4. 总结关系型数据库与NoSQL数据库并非对立而是互补的关系即通常情况下使用关系型数据库在适合使用NoSQL的时候使用NoSQL数据库让NoSQL数据库对关系型数据库的不足进行弥补。一般会将数据存储在关系型数据库中在nosql数据库中备份存储关系型数据库的数据 ​1.2.主流的NOSQL产品• 键值(Key-Value)存储数据库相关产品 Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB典型应用 内容缓存主要用于处理大量数据的高访问负载。 数据模型 一系列键值对优势 快速查询劣势 存储的数据缺少结构化• 列存储数据库相关产品Cassandra, HBase, Riak典型应用分布式的文件系统数据模型以列簇式存储将同一列数据存在一起优势查找速度快可扩展性强更容易进行分布式扩展劣势功能相对局限• 文档型数据库相关产品CouchDB、MongoDB典型应用Web应用与Key-Value类似Value是结构化的数据模型 一系列键值对优势数据结构要求不严格劣势 查询性能不高而且缺乏统一的查询语法• 图形(Graph)数据库相关数据库Neo4J、InfoGrid、Infinite Graph典型应用社交网络数据模型图结构优势利用图结构相关算法。劣势需要对整个图做计算才能得出结果不容易做分布式的集群方案。1.3 什么是RedisRedis是用C语言开发的一个开源的高性能键值对key-value数据库官方提供测试数据50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s 且Redis通过提供多种键值数据类型来适应不同场景下的存储需求目前为止Redis支持的键值数据类型如下 MapString,List1) 字符串类型 string   String,String2) 哈希类型 hash (map)   String,Map3) 列表类型 list         String,List4) 集合类型 set     String,Set5) 有序集合类型 sortedset   String,1.3.1 redis的应用场景• 缓存数据查询、短连接、新闻内容、商品内容等等• 聊天室的在线好友列表• 任务队列。秒杀、抢购、12306等等• 应用排行榜• 网站访问统计• 数据过期处理可以精确到毫秒• 分布式集群架构中的session分离(集群环境中进行会话管理)

  5. 下载安装1. 官网https://redis.io2. 中文网http://www.redis.net.cn/3. 解压直接可以使用* redis.windows.conf配置文件* redis-cli.exeredis的客户端* redis-server.exeredis服务器端3. 命令操作1. redis的数据结构* redis存储的是key,value格式的数据其中key都是字符串value有5种不同的数据结构* value的数据结构1) 字符串类型 string2) 哈希类型 hash map格式  3) 列表类型 list linkedlist格式。支持重复元素4) 集合类型 set 不允许重复元素5) 有序集合类型 sortedset不允许重复元素且元素有顺序2. 字符串类型 string1. 存储 set key value127.0.0.1:6379 set username zhangsanOK2. 获取 get key127.0.0.1:6379 get usernamezhangsan3. 删除 del key127.0.0.1:6379 del age(integer) 13. 哈希类型 hash1. 存储 hset key field value127.0.0.1:6379 hset myhash username lisi(integer) 1127.0.0.1:6379 hset myhash password 123(integer) 12. 获取 * hget key field: 获取指定的field对应的值127.0.0.1:6379 hget myhash usernamelisi* hgetall key获取所有的field和value127.0.0.1:6379 hgetall myhash1) username2) lisi3) password4) 1233. 删除 hdel key field127.0.0.1:6379 hdel myhash username(integer) 14. 列表类型 list:可以添加一个元素到列表的头部左边或者尾部右边1. 添加1. lpush key value: 将元素加入列表左边2. rpush key value将元素加入列表右边127.0.0.1:6379 lpush myList a(integer) 1127.0.0.1:6379 lpush myList b(integer) 2127.0.0.1:6379 rpush myList c(integer) 32. 获取* lrange key start end 范围获取127.0.0.1:6379 lrange myList 0 -11) b2) a3) c3. 删除* lpop key 删除列表最左边的元素并将元素返回* rpop key 删除列表最右边的元素并将元素返回 5. 集合类型 set 不允许重复元素 无序(存储的顺序和取出的不一致)1. 存储sadd key value127.0.0.1:6379 sadd myset a(integer) 1127.0.0.1:6379 sadd myset a(integer) 02. 获取smembers key:获取set集合中所有元素127.0.0.1:6379 smembers myset1) a3. 删除srem key value:删除set集合中的某个元素 127.0.0.1:6379 srem myset a(integer) 16. 有序集合类型 sortedset不允许重复元素且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 ​1. 存储zadd key score value127.0.0.1:6379 zadd mysort 60 zhangsan(integer) 1127.0.0.1:6379 zadd mysort 50 lisi(integer) 1127.0.0.1:6379 zadd mysort 80 wangwu(integer) 12. 获取zrange key start end [withscores]127.0.0.1:6379 zrange mysort 0 -11) lisi2) zhangsan3) wangwu ​127.0.0.1:6379 zrange mysort 0 -1 withscores1) zhangsan2) 603) wangwu4) 805) lisi6) 5003. 删除zrem key value127.0.0.1:6379 zrem mysort lisi(integer) 1 ​7. 通用命令1. keys * : 查询所有的键2. type key 获取键对应的value的类型3. del key删除指定的key value

  6. 持久化1. redis是一个内存数据库当redis服务器重启获取电脑重启数据会丢失我们可以将redis内存中的数据持久化保存到硬盘的文件中。2. redis持久化机制1. RDB默认方式不需要进行配置默认就使用这种机制* 在一定的间隔时间中检测key的变化情况然后持久化数据1. 编辑redis.windwos.conf文件#   after 900 sec (15 min) if at least 1 key changedsave 900 1#   after 300 sec (5 min) if at least 10 keys changedsave 300 10#   after 60 sec if at least 10000 keys changedsave 60 10000

    after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed save 900 1 save 300 10 save 60 10000 2. 重新启动redis服务器并指定配置文件名称D:\JavaWeb2018\day23_redis\资料\redis\windows-64\redis-2.8.9redis-server.exe redis.windows.conf 2. AOF日志记录的方式可以记录每一条命令的操作。可以每一次命令操作后持久化数据1. 编辑redis.windwos.conf文件appendonly no关闭aof – appendonly yes 开启aof# appendfsync always 每一次操作都进行持久化appendfsync everysec 每隔一秒进行一次持久化# appendfsync no 不进行持久化

  7. Java客户端 Jedis* Jedis: 一款java操作redis数据库的工具.* 使用步骤1. 下载jedis的jar包  dependenciesdependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion2.6.2/version/dependency/dependencies2. 使用//1. 获取连接Jedis jedis new Jedis(localhost,6379);//2. 操作jedis.set(username,zhangsan);//3. 关闭连接jedis.close();

  • Jedis操作各种redis中的数据结构 1) 字符串类型 string set get //1. 获取连接Jedis jedis new Jedis();//如果使用空参构造默认值 localhost,6379端口//2. 操作//存储jedis.set(username,zhangsan);//获取String username jedis.get(username);System.out.println(username);//可以使用setex()方法存储可以指定过期时间的 key valuejedis.setex(activecode,20,hehe);//将activecodehehe键值对存入redis并且20秒后自动删除该键值对//3. 关闭连接jedis.close(); ​2) 哈希类型 hash map格式  hsethgethgetAll//1. 获取连接Jedis jedis new Jedis();//如果使用空参构造默认值 localhost,6379端口//2. 操作// 存储hashjedis.hset(user,name,lisi);jedis.hset(user,age,23);jedis.hset(user,gender,female);// 获取hashString name jedis.hget(user, name);System.out.println(name); // 获取hash的所有map中的数据 MapString, String user jedis.hgetAll(user); // keysetSetString keySet user.keySet();for (String key : keySet) {//获取valueString value user.get(key);System.out.println(key : value);}//3. 关闭连接jedis.close(); 3) 列表类型 list linkedlist格式。支持重复元素lpush / rpushlpop / rpoplrange start end : 范围获取//1. 获取连接Jedis jedis new Jedis();//如果使用空参构造默认值 localhost,6379端口//2. 操作// list 存储jedis.lpush(mylist,a,b,c);//从左边存jedis.rpush(mylist,a,b,c);//从右边存// list 范围获取ListString mylist jedis.lrange(mylist, 0, -1);System.out.println(mylist);// list 弹出String element1 jedis.lpop(mylist);//cSystem.out.println(element1);String element2 jedis.rpop(mylist);//cSystem.out.println(element2);// list 范围获取ListString mylist2 jedis.lrange(mylist, 0, -1);System.out.println(mylist2);//3. 关闭连接jedis.close(); 4) 集合类型 set 不允许重复元素saddsmembers:获取所有元素 ​//1. 获取连接Jedis jedis new Jedis();//如果使用空参构造默认值 localhost,6379端口//2. 操作 // set 存储 jedis.sadd(myset,java,php,c); // set 获取SetString myset jedis.smembers(myset);System.out.println(myset);//3. 关闭连接jedis.close();5) 有序集合类型 sortedset不允许重复元素且元素有顺序zaddzrange ​//1. 获取连接Jedis jedis new Jedis();//如果使用空参构造默认值 localhost,6379端口//2. 操作// sortedset 存储jedis.zadd(mysortedset,3,亚瑟);jedis.zadd(mysortedset,30,后裔);jedis.zadd(mysortedset,55,孙悟空);// sortedset 获取SetString mysortedset jedis.zrange(mysortedset, 0, -1);System.out.println(mysortedset); //3. 关闭连接 jedis.close();
  • jedis连接池 JedisPool * 使用 1. 创建JedisPool连接池对象 2. 调用方法 getResource()方法获取Jedis连接 //0.创建一个配置对象 JedisPoolConfig config new JedisPoolConfig(); config.setMaxTotal(50); config.setMaxIdle(10); //1.创建Jedis连接池对象JedisPool jedisPool new JedisPool(config,localhost,6379);//2.获取连接Jedis jedis jedisPool.getResource();//3. 使用jedis.set(hehe,heihei); //4. 关闭 归还到连接池中 jedis.close(); * 连接池工具类public class JedisPoolUtils { ​private static JedisPool jedisPool;static{//读取配置文件InputStream is JedisPoolUtils.class.getClassLoader().getResourceAsStream(jedis.properties);//创建Properties对象Properties pro new Properties();//关联文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//获取数据设置到JedisPoolConfig中JedisPoolConfig config new JedisPoolConfig();config.setMaxTotal(Integer.parseInt(pro.getProperty(maxTotal)));config.setMaxIdle(Integer.parseInt(pro.getProperty(maxIdle)));//初始化JedisPooljedisPool new JedisPool(config,pro.getProperty(host),Integer.parseInt(pro.getProperty(port))); ​ } /** 获取连接方法 */ public static Jedis getJedis(){ return jedisPool.getResource(); } } ———————————————-