当前位置: 首页 - 编程技术 - 文章正文

缓存技术_redis和MD5加密

xiaoqihv
##NoSQL 简介## NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 > 更多 http://www.runoob.com/mongodb/nosql.html NoSQL的优点/缺点 - 优点: - 高可扩展性 - 分布式计算 - 低成本 - 架构的灵活性,半结构化数据 - 没有复杂的关系 - 缺点: - 没有标准化 - 有限的查询功能(到目前为止) - 最终一致是不直观的程序 ##Redis## Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 (超级的MAP),NoSQL的一种。 它支持多种数据类型字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 > 更多 http://www.runoob.com/redis/redis-intro.html ##下载&安装## 1. 到官网下载 redis (一般环境搭建到linux系统) 2. 安装文件 Redis-x64-3.2.100.msi (一定要记得安装的路径) ##启动## 解决第一次启动window报错问题 1. CMD下进入安装目录 ,执行reids-cli.exe 2. 输入shutdown 3. 输入exit 正式启动Redis服务器 CMD下进入安装目录 ,执行如下命令开启服务 redis-server.exe redis.windows.conf 另起一个命令窗口,进入安装目录 1. 执行 redis-cli.exe 2. 设置键值对  set myKey abc 3. 取出键值对  get myKey redis.windows.conf(redis文件夹中) 为redis的配置文件 其中 bind(搜索bind) 属性是只可访问的IP地址例如 bind 127.0.0.1 192.168.1.100 192.168.1.101 //可以在这个后面加这个id地址,可以连接其他人的ip,经测试:加0.0.0.0连其他人的ip     表示IP100,101 可连接使用我的redis服务器  > 其它更多数据类型使用 参考手册 http://www.runoob.com/redis/redis-install.html ## Java 中使用 ## 第一步:依赖Jar     jedis 是redis的Java版本驱动包     spring-data-redis 是Spring 对redis 的相关集成 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.4.RELEASE</version> </dependency> 第二步简单使用 public static void main(String[] args) {      //连接本地的 Redis 服务      Jedis jedis = new Jedis("localhost");      System.out.println("Connection to server sucessfully");      //设置 redis 字符串数据      jedis.set("runoobkey", "Redis tutorial");     // 获取存储的数据并输出     System.out.println("Stored string in redis:: "+ jedis.get("runoobkey")); } ## Spring 中集成使用 ## 第一步 spring 配置文件添加 <bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="127.0.0.1"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisConnFactory" /> 第二步 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:configs/spring/spring-context.xml") public class MyTest { @Autowired    private RedisTemplate<String, Object> redisTemplate; @Test public void testReids() throws InterruptedException{ List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); // 存放缓存  3秒钟失效   , 键为 myKey 值为list对象 redisTemplate.opsForValue().set("myKey", list, 3 , TimeUnit.SECONDS); System.out.println(redisTemplate.opsForValue().get("myKey")); System.out.println(redisTemplate.opsForValue().get("myKey")); Thread.sleep(3000); System.out.println(redisTemplate.opsForValue().get("myKey")); } } ## 缓存的意义 ## 缓存的意义就是提高查询性能 , 以空间换取时间 . 例如: 淘宝首页 (每隔几分钟才刷新一次)  12306剩余火车票(每个30分钟刷新一次) 什么时候用缓存技术 1. 数据不常发生改变 2. 数据实时性要求不高 3. 查询或计算需要耗费大量的性能时 ## 其它常见的缓存框架或Nosql框架 ## ecache , memcache , mongoDB  要了解细节google, baidu ##哪些地方会用到缓存##     1.可以通过数据库的索引 2.如果性能还是没提高,就可以考虑使用redis ##MD5## Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321 ##用途## 1. 数字签名 (用于校验一致性) 大家都知道,地球上任何人都有自己独一无二的指纹;与之类似, MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”(也叫MD5值), 如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。 2. 安全访问认证 (广泛用于登陆认证) 用于密码加密技术,用户密码是珍贵的保密的系统不能直接保存用户明文密码,否则被黑客入侵将是一种灾难 ##使用## // Java 自带的MD5算法 , 也有公司会自己实现(通常都是网上流传的一些例子) import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; public class MD5Util { public static String md5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md5 = MessageDigest.getInstance("MD5"); BASE64Encoder base64en = new BASE64Encoder(); return base64en.encode(md5.digest(str.getBytes("utf-8"))); } public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException { System.out.println(MD5Util.md5("123456")); } } ##加盐## 因为MD5常用容易被匹配出来,例如网上有个MD5破解网站 http://www.cmd5.com/, 原理就是收集了大量的MD5值 加盐简单来说就是为加密的串添加一些其它内容,以达到别人无法猜测的目的。 例如 用户名:admin   密码: 123456 加盐密码: $%@!^&123456 或 $%@!^&123456admin    博客 http://blog.csdn.net/blade2001/article/details/6341078
文章地址:https://wenmayi.cn/post/522.html