播客黑马p2p金融项目网络借贷平台开发实战视频课件、代码redis_第1页
播客黑马p2p金融项目网络借贷平台开发实战视频课件、代码redis_第2页
播客黑马p2p金融项目网络借贷平台开发实战视频课件、代码redis_第3页
播客黑马p2p金融项目网络借贷平台开发实战视频课件、代码redis_第4页
播客黑马p2p金融项目网络借贷平台开发实战视频课件、代码redis_第5页
免费预览已结束,剩余10页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Redis简介:redis 是一个 key-value系统。和 Memcached 类似,它支持的 value 类型相对,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set -有序集合)和 hash(哈希类型)。这些数据类型都 支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis 支持各种不同方式的排 序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的master-slave(主从

2、)同步。文 件,并且在此基础上实现了Redis 是一个高性能的 key-value 数据库。 redis 的出现,很大程度补偿了 memcached 这类 key/value的,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C+,C#,使用很方便。1,JavaScript,Perl,Object-C,Ruby,Erlang 等客户端,Redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务 器。这使得 Redis 可执行单层树。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同

3、步树时,可订阅一 个频道并接收主服务器完整的消息发布冗余很有帮助。同步对操作的可扩展性和数据Redis 的官网地址,非常好记,是 redis.io。(特意查了一下,后缀 io 属于国家,是 britishn Ocean territory,即英属洋领地)目前,Vmware 在资助着 redis 项目的开发和。安装 redis:1.进入官网:2.8.19运行命令:$tar执行:$cd redis-2.8.19$make版本redis,本文档使用的版本是Redisxvzfredis-2.8.19.tar.gz如果在 make 过程中出现异常有如下可能异常一:make2: cc:d not foun

4、d异常原因:没有安装gcc解决方案:apt-get异常二:zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directoryinstall gcc-c+异常原因:一些编译依赖或原来编译遗留出现解决方案:make distclean。一下,然后再 make。在 make 成功以后,需要执行 make test。如果在make test 出现异常有如下可能。异常一:couldnt execute tclsh8.5: no such file or directory异常原因:没有安装 tcl解决方案:apt-getinsta

5、ll -y tcl。在 make 成功以后,会在 src 目录下多出一些可执行文件:redis-server,redis-cli 等等。执行$cp redis-server /usr/local/bin/redis-server.sh 文件考入 bin 下面表示在任何目录都可以执行 redis-server 这个 sh执行$cp redis-cli /usr/local/bin/这个是用来启动 redis 服务的。redis-cli.sh 文件考入 bin 下面表示在任何目录都可以执是用来连接 redis 数据库输入命令操作数据库的。行 redis-cli 这个 sh这个然后新建如下目录,存放

6、配置文件:$ mkdir /etc/redis$ mkdir /var/redis$ mkdir /var/redis/log$ mkdir /var/redis/run$ mkdir /var/redis/6379在 redis 解压根目录中找到配置文件模板,cp redis.conf /etc/redis/6379.conf到如下位置。通过 vim 命令修改配置文件模板输入如下命令:vi /etc/redis/6379.conf 修改 6379.conf 文件的如下内容,这个文件是 redis启动的配置文件。daemonize yesfile /var/redis/run/redis_63

7、79. logfile /var/redis/log/redis_6379.logdir /var/redis/6379最后运行 redis:输入如下命令$ redis-server /etc/redis/6379.conf 如下图通过查看进程可以看到 redis 已经运行了运行 redis-cli 连接到 redis 数据库 表示数据库已经成功启动五种数据类型和基本命令简介:设置 String 型的变量和值:Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以任何东西,512 兆为上限。第一个示例:get 命令如下图:命

8、令说明:1. SET key value 此命令用于在指定键设置值。2. GET key 键对应的值。上面这个例子是吧 name 变量设置的值为 yiibai,然后查询出来。第二个示例:append 命令如下图:命令说明:APPEND key value 追加值到一个键第三个示例:del 命令如下图:命令说明:del key 删除一个键第四个示例:expire 和 ttl 命令:命令说明:expire key second设置一个键的过期时间。ttl key 来查询这个键余的有效时间。设置哈希表类型的变量和值:Redis 的哈希是键值对的集合。 Redis 的哈希值是字符串字段和字符串值之间的

9、映射,因此它们被用来表示对象第一个示例: HMSET 和 HGETALL 命令如下图:命令说明:1. Redis HMSET 命令用于设置指定字段各自的值,在希任何现有字段。如果键不存在,新的key 由哈希创建。于键的散列。此命令将覆盖哈2.Redis HGETALL 命令用于获取在键的散列的所有字段和值。在返回的值是每一个字后跟其值,所以回复的长度是散列值两倍的大小。上面这个例子是先设置一个 hastable 然后往里面设置一些值,接下来再取出来第二个示例: HMGET 命令如下图:再看下面这个例子来获取单一字段的值,这里的字段是 username, 命令是 HMGET 命令格式是这样的 H

10、MGET key field1 field2第三个示例: HDEL 命令如下图:再看下面的例子还删除单一字段的值,这里的字段是 username,命令是 HDEL是这样的 HDEL key field2 field2 ,结果返回一说明删除一个字段成功了。命令格式设置列表类型的变量和值List 类型说明:Redis 的列表是简单的字符串列表,排序Redis 列表的头部或尾部。示例如下:顺序。您可以添加元素到第一个示例: LPUSH,RPUSH 和 LRANGE 命令如下图:示例说明:lpush 是往 list 头部添加元素,这里是往List 的头部添加了一个 classone 的元素。命令格式如

11、下:LPUSH key value1 value2面加上一个或多个值的列表。rpush 是往 list 尾部添加元素,这里是往List 的尾部添加了一个classtwo 的元素。命令格式如下:RPUSH key value1 value2 添加一个或多个值到列表。Lrange是列出列表中的元素后面的两个数字表示列表元素的起始和终止下标值。命令格式如下: LRANGE key start stop 从一个列表获取各种元素。第二个示例: RPOP 命令如下图:下一个示例:从列表尾部删除一个元素:说明:RPOP 是从队列尾部删除一个元素,从上面的例子中可以看出。从队列尾部删除的元素是classthr

12、ess,删除元素后。在用 lrange 命令去查询,可以看到剩余的元素。命令格式如下:RPOP key 取出并获取列表中的最后一个元素。第三个示例: LPOP 命令如下图:说明:LPOP 是从队列头部删除一个元素,上面的例子中可以看出。从队列头部删除的元素是 classfour,删除元素后。在用 lrange 命令去查询,可以看到剩余的元素。命令格式如下: LPOP key 获取并取出列表中的第一个元素。第四个示例: LLEN 命令如下图:说明:这里使用 llen 命令来求一个列表的长度,这里的长度是 2。LLEN key 获取列表的长度。命令格式如下:LLEN key 获取列表的长度。第五个

13、示例: LINDEX 命令如下图:说明:这里使用 lindex 命令来返回列表中的元素,这里是返回了list 列表的第一个元素下标为 0,值为classfour命令格式如下:lindexkeyindexNumber。设置集合类型的变量和值说明Redis 的集合是字符串的无序集合。在 Redis 您可以添加,删除和测试文件是否存在,在成员 O(1)的时间复杂度。具体例子如下:第一个示例: SADD,SMEMBERS 命令如下图:说明:用 sadd 命令创建一个无需集合unorderset, sadd 格式如下:sadd key value然后用 sadd 命令往集合中添加元素 oracle, n

14、osql, mongodb,java 元素,然后用 smembers命令把元素都列出来。smembers 格式如下: smembers key置有序集合的变量和值:说明Redis 的集合是字符串的无序集合。在 Redis 您可以添加,删除和测试文件是否存在,在成员 O(1)的时间复杂度。具体例子如下:第一个示例: ZADD,ZRANGE 命令如下图:说明:创建一个无需集合set, 然后往集合中添加元素 mongodb, nosql, oracle并且分数都是 1。然后在用ZADD 命令来更新这些分值,分别更新为 2,3,4。用 zrang 命令来列出这些值和对应的值。ZADD 命令格式:ZAD

15、D key score1 member1 score2 member2ZRANGE 命令格式:ZRANGE key start stop WITHSCORES 由索引返回一个成员范围的有序集合。第二个示例: ZREM 命令如下图:说明:用 REM 命令删除set 的成员 nosql,在用 zrange 命令来查询结果。命令格式:ZREM key member member . 从有序集合中删除一个或多个成员。第三个示例: ZCARD 命令如下图:Redis 事务和基本命令简介:说明:Redis 事务让一组命令在单个步骤执行。事务中有两个属性,说明如下:在一个事务中的所有命令按顺序执行作为单个操

16、作。通过另一个客户端发出的请求在 Redis 的事务的过程中执行,这是不可能的。Redis 的事务具有原子性。原子意味着要么所有或都不执行。看下面的例子:令都执行第一个示例: ZADD,ZRANGE 命令如下图:例子说明:MULTI 命令是 redis 的事物命令,在例子中设置了 string 类型的string 变量。并且返回了返回了它的值,然后增加 visitors 的值。调用 exec 方法来执行这个事物中可以在下面看到执行的结果。令。Redis 在项目中的使用:说明主要是用在以登录用户信息的部分,登陆后用户的信息会在 redis 里面,还有和的验证等细小信息。现在的代码中已经完成了层的

17、代码部分,即 redis 的基本操作。具体的业务可以直接调用层的代码来完成。Spring 和 Jedis 的集成:在 项 目 中 主 要 涉 及 到 applicationContext.xml , applicationContext-cache.xml perties 这三个配置文件。具体说明如下:在项目的 applicationContext.xml 里面内容如下:和在项目的perties 里面内容如下: redis.server=25 redis 服务器的默认地址 redis.port=6379 redis 服务器的端re

18、dis 服务器的b=0 连接到 redis 的数据库,默认的库就是 0redis.pass=redis.defauredis.timeout=100000 连接超时时间设置redis.maxActive=300 连接池的最大数据库连接数。设为 0 表示。redis.maxIdle=100 最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被。设为 0 表示。redis.maxWait=1000 最大等待毫秒数,为 ms, 超过时间会出错误信息redis.testOnBorrow=true 在 borrow 一个 jedis 实例时,是否提前进行 validat

19、e 操作;如果为true,则得到的 jedis 实例均是可用的;在项目的 applicationContext-cache.xml 里面内容如下:说明:首先定义了一个 bean 它的 class 为 JedisConnectionFactory,redis.server 和redis.port 都是在 perties 中获得的,它们分别是 redis 的地址和端,id为 jedisConnectionFactory。然后定义了另一个 bean 这个 bean 会在代码中使用,用它来直接操作 redis。它的 class 为RedisTemplate,并且把 jedisCon

20、nectionFactory 作为参数传递给 redisTemplate 类。层的实现类:package cn.cache.impl;import java.util.List;import java.util.Map;import java.util.concurrent.TimeUnit;importimport import import cn.springframework.beans.factory.annoion.Autowired;.springframework.data.redis.core.RedisTemplate;.springframew.cache.BaseCach

21、eService;ponent;Component(redisCache)public class RedisCacheServiceImpl implements BaseCacheService Autowiredprivate RedisTemplate redisTemplate;/这个方法是在 redis 中设置一个 String 类型的变量。Key 对应的值是 value/在 redis 中对应Override令是 SET key value 此命令用于在指定键设置值public void set(String key, String value) redisTemplate.op

22、sForValue().set(key, value);/这个方法是在 redis 中得到一个 String 类型的变量。/在 redis 中对应Override令是 SET key value 此命令用于在指定键设置值public String get(String key) return (String)redisTemplate.opsForValue().get(key);/是在 redis 中对应的 key 中追加 value 值/在 redis 中对应Override令是 APPEND key value 追加值到一个键public void append(String key,

23、String value) redisTemplate.opsForValue().append(key, value);/是在 redis 中删除对应 key 的值/在 redis 中对应Override令是 del key 删除一个键public void del(String key) redisTemplate.delete(key);/设置一个Key 的超时时间以秒为。如果超过这个时间队应的 key 就失效了哦/在 redis 中对应Override令是 expire key timepublic void expire(String key, long seconds) this.

24、redisTemplate.expire(key, seconds, TimeUnit.SECONDS);/得到对应 key 的剩余存活时间/在 redis 中对应Override令是 ttl key 得到 key 的剩余生命时间public Long ttl(String key) return this.redisTemplate.getExpire(key);/对 redis 的 key 对应的List 尾部放入java 的 list 里面的元素/在 redis 中对应Override令是 rpush key value 是往队尾添加数据public long rPush(String

25、key , List list)returnthis.redisTemplate.opsForList().rightPushAll(key, list.toArray();/返回 token 值为 key 的列表中,下标为 index 的元素。/在 redis 中对应令是 lindex key number 例如:SuppressWarnings(unchecked)public T lindex(String key, long index) return (T)this.redisTemplate.opsForList().index(key, index);/对 redis 的 key

26、 对应的List 查询从 start 到 end 对应的元素/在 redis 中对应令是 range key start end 是查询队列范围从start 到 end 的数据SuppressWarnings(unchecked)public List lRange(String key, long start,long end) return (List)this.redisTemplate.opsForList().range(key, start, end);/对 redis 的 key 对应的List 删除从 start 到 end 对应的元素/在 redis 中对应Override令是LTRIM key start stop 修剪列表到指定的范围内public void lTrim(String key, long start, long end) this.redisTemplate.opsForList().trim(key, start, end);/删除 redis 对应的 key,然后把 key 设置为队列,把java 的 list 参数放入到队列中/在 redis 中对应令是先执行 del key 命令删除对应的 key 值然后执行 rpush 命令把list 内的对象放入到标示为key 的列表中。Overridepublic void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论