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

html做的旅游网站长沙市做网站

html做的旅游网站,长沙市做网站,有限公司注册资金最低多少,新乡手机网站建设哪家好文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库#xff08;不支持SQL标准语法#xff09;。 … 文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库不支持SQL标准语法。 特点 C语言编写的开源的https://github.com/redis可基于内存是把数据存在到内存上的可持久化可以把内存里面的数据持久化到磁盘(为了实现数据恢复)key-value数据在内存中是以键值对的方式来存储的支持网络客户端是通过网络连接服务端的支持多种语言可以在各种语言的代码中操作Redis 安装及使用 核心文件 启动 启动服务器 启动客户端 在Linux系统中使用及安装 redis的核心配置 常规配置 # 表示redis服务端是不是以守护进程后台进程的方式运行 daemonize no# 客户端和服务端之间建立连接假如超过多长时间没有进行通信那么就断开连接 # 0表示不关闭连接 timeout 0# 端口号一般不用去改 port 6379# 绑定的主机地址 bind 127.0.0.1 # 所有人都可以连接 # bind 0.0.0.0# 日志级别 loglevel notice# 数据库的数量设置 databases 16# 密码设置 requirepass 123456持久化配置 RDB RDB是指Redis通过内存快照的形式来持久化内存中的数据到磁盘中。 快照其实就是一种内存技术就可以像对内存进行拍照一样保存内存当时的状态。 快照的速度很快快照保存的一种数据的状态占用的磁盘空间比较小快照会保存完整的数据 RDB是Redis默认的持久化策略没有提供开关关闭。 # 内存快照保存文件的位置 dir D:\tmp# 内存快照保存文件的名字 dbfilename dump.rdb# 快照触发的策略 save seconds changes # 在多少秒之后检查有多少次改变如果达到设置的条件那么就触发持久化 save 900 1 save 300 10 save 60 10000总结 RDB每次保存的是触发RDB时刻的完整的数据RDB可能丢失数据可能会丢失上一次持久化之后所有写入的数据RDB保存数据的速度很快还原数据也很快 AOF Append only file。AOF这种持久化的机制是通过追加(写操作命令)日志文件的方式来保存数据的 AOF会把用户输入的每一个写入命令保存到文件中后续恢复数据的时候可以通过执行这个文件中的所有的命令来恢复数据。 # 总开关 # AOF默认是关闭的 appendonly no# 保存文件的路径 # 配置和RDB是同一个配置 dir D:\tmp# 保存文件的名字 appendfilename appendonly.aof# 保存的策略# 每收到一条写入的命令就把命令保存到文件中 # appendfsync always# 每秒保存一次推荐使用的 appendfsync everysec# 依赖于操作系统的策略 # appendfsync noAOF持久化机制的总结 AOF可以做到不丢失数据仅限于appendfsync alwaysAOF保存数据生成的文件会越来越大占用磁盘空间比较大AOF还原数据要通过 执行文件中的所有的命令来还原数据还原数据比较慢 AOF和RDB是可以同时运行的。 当两种机制都开启的时候恢复数据的时候优先从AOF生成的文件来恢复数据。 数据结构 redis存储数据支持五种数据结构 string、list、hash、set、zsetsortedset 常用命令 # 切换数据库index从0开始 select index# 认证密码 auth password# 搜索key (pattern 是一个正则表达式) keys pattern # 常用的是keys * 查看所有的key# 清空数据库删库 # 清空所有的数据库16个 flushall# 清空当前的数据库 flushdbstring string数据结构是Redis中最基本的数据结构包含 String 数字类型 # 设置一个键值对如果key存在会覆盖 set key value# 获取一个键值对的值 get key# 批量的设置键值对 mset key1 value1 key2 value2 ...# 批量的获取键值对 mget key1 key2 key3 ...# 给指定的key的value 1 value必须得是一个数值 incr key# 给指定的key增加指定的步长 incrby key increment# 给指定的key的value -1 decr key# 给指定的key减去指定的步长 decrby key decrement# 设置一个key-value并且指定过期时间 setex key seconds value# set not exists,设置一个键值对不会覆盖原来的值 # 当key不存在的时候再去设值不会覆盖原来的值 setnx key valuelist list的本质是一个双向链表。Redis支持用户从list的两端推入或者是弹出元素。 可重复有序 # 从队列的左端推入元素当list不存在的时候会自动创建一个新的list然后来推入 lpush key value1 value2 ...# 从队列的左端弹出一个元素 lpop key# 从队列的右端推入元素 rpush key value1 value2 ...# 从队列的右端弹出一个元素 rpop key# 查看链表的元素数量 llen key# 查看某一个范围内的元素(start、stop指元素的下标最左边的元素下标为0) lrange key start stop# 求指定下标的元素值 lindex key index# 插入一个元素(在指定的元素pivot 前面或者是后面插入一个指定的元素 value ) # 如果指定的元素pivot有重复那么就会在第一个值前面或者是后面插入 linsert key before|after pivot value# 正常的从左端推入当list存在的时候才会生效 lpushx key value# 修改指定位置元素的值 lset key index value# 删除前几个指定的元素 lrem key count value应用场景 消息队列最新动态消息排行榜 set set是无序的集合 无序不可重复 # 往无序集合中添加元素 sadd key member1 member2 ...# 查看无序集合中元素的个数 scard key# 查看无序集合中所有的元素 smembers# 判断某个元素在不在指定的集合中 sismember key member# 随机弹出一个元素(取出并删除) spop key [count]# 随机从集合中取出一个元素的值取出不删除 srandmember key [count]# 求交集 sinter key1 key2 ...# 求出交集并保存 sinterstore destination key1 key2 ...# 求并集 sunion key1 key2 ...# 求出并集并保存 sunionstore destination key1 key2 ...# 求差集 sdiff key1 key2 ...# 求出差集并保存 sdiffstore destination key1 key2 ...# 移动元素 smove source destination member# 删除元素 srem key member1 member2 ...应用场景 求共同好友好友推荐 hash hash叫做二维表类似于map。hash这种数据结构可以看作是一个map可以存储多个键值对。 # 设置一个键值对 hset key field value# 获取指定二维表中field的值 hget key field# 设置多个键值对 hmset key field1 value1 field2 value2 ...# 获取多个键值对的值 hmget key field1 field2 ...# 判断二维表中有没有指定的field hexists key field# 获取二维表中所有的键值对 hgetall key# 获取二维表中所有的键 hkeys key# 获取二维表中所有的值 hvals key# 求出二维表中 键值对的个数 hlen key# 给键值对的值 增加指定的长度 hincrby key field increment# 设置值不覆盖 hsetnx key field value应用场景 hash这种数据结构天然的适合存储对象field存对象的成员变量名value存成员变量对应的值存储商城中的购物车 zset(sortedset) 有序的集合 有序集合的最大特点是可以任意的取出有序集合中指定排名区间内的成员、以及指定分数区间内的成员 # 往有序集合中添加成员一级他的分数注意分数在前名字在后 zadd key score1 member1 score2 member2 ...# 计算集合中元素的总个数 zcard key# 求指定分数区间内成员的个数分数是闭区间 zcount key min max# 求出指定成员的分数 zscore key member# 给指定的成员增加分数 zincrby key score member# 求出指定排名区间内的成员(排名从0开始默认按照分数的升序排列) zrange key start stop [withscores]# 求出指定排名区间内的成员(排名从0开始默认按照分数降序排列) zrevrange key start stop [withscores]# 求指定分数区间内的成员-按照分数的升序排列 zrangebyscore key min max [withscores]# 求指定分数区间内的成员-按照分数的降序排列 zrevrangebyscore key max min [withscores]# 求出指定成员的排名按照分数的升序排名 zrank key member# 求出指定成员的排名按照分数的降序排名 zrevrank key member# 删除指定的成员 zrem key member1 member2 ...# 删除指定排名区间内的所有成员 zremrangebyrank key start stop [withscores]# 删除指定分数区间内的所有成员 zremrangebyscore key min max [withscores]应用场景 游戏中积分排行榜 内存淘汰策略 Redis是一个基于内存来存储的数据库而内存资源是十分宝贵且有限的。那么当内存满了之后Redis又需要存储新的数据的时候Redis会触发内存淘汰策略来淘汰老的数据保证写入的成功。分类 volatile-lruleast recent used 从已经设置了过期时间的数据集中选择最近最少使用的数据进行淘汰比较合理的但是比较慢 volatile-lfu 从已经设置了过期时间的数据集中选择一段时间内使用最少的key进行淘汰 volatile-random 从已经设置了过期时间的数据集中随机选择数据进行淘汰效率最高的 volatile-ttl 从已经设置了过期时间的数据集中选择最近将要过期的数据进行淘汰 allkeys-lru 从所有的数据集中选择最近最少使用的数据进行淘汰 alleys-random 从所有的数据集中随机选择数据进行淘汰 allkeys-lfu 从所有的数据集中选择一段时间内使用最少的key进行淘汰 no-evication 禁止淘汰数据如果有新的数据需要写入那么就直接报错 从效率的角度出发allkeys-random 优先保证淘汰的效率 从合理性的角度从出发volatile-lru MySQL: 用户敏感的访问量没那么大的 Redis: 用户不敏感的访问量大的 Redis的Java客户端 Jedis 全称叫做Java for Redis使用非常简单因为Jedis的每一个方法都和Redis的相关的命令名字是一致的。步骤 导包 dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion2.9.0/version /dependency配置 Jedis不需要任何配置 使用 // 1. 创建一个Jedis对象Jedis jedis new Jedis(localhost,6379);// 2. 认证密码jedis.auth(123456);// 3. 操作jedis.set(nickname, ls);String nickname jedis.get(nickname);System.out.println(nickname);// jedis.hset() // jedis.rpush() // jedis.sismember() // jedis.zrank() // jedis.zrevrank()Redisson 和Jedis不同Redisson不仅仅实现了我们前面所学习过得所有的Redis命令对应的功能它自己对Redis的功能做了很多的封装提供了很多更为好用更为强大的功能比如基于Redis实现的分布式锁等等。步骤 导包 dependenciesdependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.11.1/version/dependency /dependencies首先构造出一个RedssonClient对象 // 1. new 出一个config对象Config config new Config();// 2. 配置Config对象SingleServerConfig serverConfig config.useSingleServer()// 这里设置访问Redis的地址.setAddress(redis://localhost:6379).setPassword(123456);// 设置序列化方式使用jackson实现序列化和反序列化config.setCodec(new JsonJacksonCodec());// 3. 创建redis客户端 该对象在创建的时候就会像redis-server发起连接请求RedissonClient redissonClient Redisson.create(config);创建好RedissonClient对象之后我们就可以基于ReidssonClient对象实现对Redis中5种基本数据类型的访问 eg /*该方法主要演示对于Redisstring类型数据的访问*/ private static void string(RedissonClient redissonClient) {/* 1. number表示String类型的值对应的Redis中的key2. 通过redissonClient获取存放key对应值的Bucket桶3. 桶中放的就是key对应的Redis中的string类型的值4. 对于桶的基本操作就是get/set获取桶中的值/设置桶中的值5. 对桶中值的操作都相当于是对Redis中key对应的string类型的值的操作*/RBucketInteger bucket redissonClient.getBucket(number);bucket.set(0);// 获取对应的String数据类型的值Integer result bucket.get();System.out.println(result);// 获取obj对应的存放String类型值的Bucket桶(这里其实对象被转化成了json字符串)RBucketPerson personBucket redissonClient.getBucket(obj);Person person new Person();person.setName(ls);// 向桶中放入对象personBucket.set(person);// 从桶中获取对象Person newPerson personBucket.get();System.out.println(newPerson.getName());}private static void list(RedissonClient redissonClient) {/*1. 调用redissonClient的getList方法根据指定的key获取List类型的值2. 对于我们而言List类型的值就相当于内存中的一个List所以之前怎么访问List现在完全一样3. List中可以放基本数据类型及其包装类的值也可以放对象4. 如果要修改Redis中List数据类型中的元素的值还得把修改后的元素重新调用add方法添加到List才行*/ListPerson list redissonClient.getList(listKey);// ...}private static void set(RedissonClient redissonClient) {/*1. 调用redissonClient的getList方法根据指定的key获取Set类型的值2. 对于我们而言List类型的值就相当于内存中的一个Set所以之前怎么访问Set现在完全一样3. Set中可以放基本数据类型及其包装类的值也可以放对象4. 因为Set无序所以仍然和之前一样可以用迭代器或者stream流来访问*/SetString set redissonClient.getSet(setKey);set.add(setValue);IteratorString iterator set.iterator();while (iterator.hasNext()) {String next iterator.next();System.out.println(next);}}private static void sortedSet(RedissonClient redissonClient) {/*1. 调用RedissonClient的getScoredSortedSet获取指定key对应的一个SortedSet2. Redisson用RScoredSortedSet对象表示一个SortedSet该类所持有的泛型表示SortSet中元素对应的Java类型3. RScoredSortedSet中的每一个元素都绑定分数所以添加的时候既要添加元素还要添加元素的score4. 可以获取元素的分数排名...5. RScoredSortedSet中也可以放Java对象*/RScoredSortedSetString sortedSet redissonClient.getScoredSortedSet(sortedKey); ​sortedSet.add(1.0, zs);sortedSet.add(2.0, lisi); ​Double score sortedSet.getScore(zs);System.out.println(score);Integer rank sortedSet.rank(zs);System.out.println(rank);}private static void map(RedissonClient redissonClient) {/*1. 在redis中获取名为mapKey的名称的hash数据结构的值2. 获取到的是一个Map就可以把它当做内存中的一个Map所以之前怎么用Map现在还是一样3. Map中的key为String类型Value可以是基本数据类型及其包装类的值也可以是对象4. 如果要修改Redis中hash数据类型中的元素的值还得把修改后的元素重新调用Map的put方法添加到Map中才行*/ MapString, String map redissonClient.getMap(mapKey);// field value// 添加map.put(mapField, mapValue);// 修改map.put(mapField, v1);//获取String mapField map.get(mapField);System.out.println(mapField);//删除map.remove(mapField);}
http://www.pierceye.com/news/435759/

相关文章:

  • 国外品牌设计网站中华始祖堂室内设计
  • 建设网站服务无极最新招聘
  • 广东省建设教育协会是什么网站揭东建设局网站
  • 那家专门做特卖的网站godaddy 搭建网站
  • 网络舆情处置的五个步骤新人学会seo
  • 网站开发要做什么在线网页转pdf
  • 购物网站开发教程中文如何调整wordpress页面的顺序
  • 网站网页设计制作教程成都外贸seo
  • 网站开发的资料设备英国搜索引擎
  • 什么样企业需要网站建设网络规划毕业设计
  • 广东制作公司网站和谐校园网站建设
  • 找潍坊做网站的h5用什么软件做的
  • 南宁网站推广费用0505网页制作与网站建设
  • 2345电视剧网站免费电子营业执照
  • 河北省沧州建设厅网站怎样保存网站资料 做证据
  • 网站同时做竞价和优化可以吗做网站游戏推广赚钱吗
  • 台州建站模板搭建上海远程教育网站设计与开发公司
  • 网站如何做淘客类似58同城分类信息网站开发
  • 网站源码文件安装教程苏州网站建设致宇
  • 免费注册域名网站知乎做网站做图电脑需要什么配置
  • 高埗做网站营销策略分析包括哪些内容
  • wordpress获取站点链接网站门户
  • flashxml网站模板网站后期培训机构全国排名
  • 企业网站设计网站页面设计中为什么要有优先级排列
  • 暗网是什么网站滨江区网站开发公司
  • 南京网站排名优化费用株洲58同城网站建设电话
  • 电子商务网站建设与管理理解上海网站推广企业
  • 设计师网站pintsetseo短视频网页入口引流免费
  • 个人如何注册微信公众号怎么创建网站优化的意义
  • 网站换空间要重新备案吗百度人工电话