版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Redis缓存数据库使以及命令1.什么是RedisRedis是个完全免费开源的 NoSQL数据库 是由意利开发的款内存速缓存数据库 该软件由C语编写,数据模型为Redis是个完全免费开源的 NoSQL数据库 是由意利开发的款内存速缓存数据库 该软件由C语编写,数据模型为Key Value 它持丰富的数据结构(类型),如String list hash set sorted.可持久化,保证了数据安全。处:经常在 热点数据 经常会被查询,但是不经常被修改删除的数据官测试数据读的速度 110000次/s 写的速度 80000次/s不会存在线程安全的问题默认持16个数据库缺 点 : 太耗内存NoSQL
2、 关系型数据库NoSQL(NoSQL = Not Only SQL ),意即不仅仅是SQL。在现代的计算系统上每天络上都会产庞的数据量。这些数据有很部分是由关系数据库管理系统(RDBMS)1970E.F.CoddsA relational model of data for large shared data banks”,这使得数据建模和应程序编程更加简单。使需求:持量并发户(数万,甚数百万量级) 为全球范围内的户提供质量的交互体验可性 并发MySQL SQLServer Oracle 等等(NoSQL)关系型数据库MongoDB Redis 等 等安装Redis数据库连接互联 更新软件包s
3、udo apt-get updatesudo apt-get update输 执后sudo apt-get install -y redis-serversudo apt-get install -y redis-server出现错误时尝试ls redis*默认安装路径为/usr/bin 可使查看ls redis*输redis-cli 启动redis客户端# # 启动Redis客户端redis-cli# 客户端命令# help 查看Redis版本信息等help# 退出Redis客户端quit 或 exitping输测试是否成功ping出现PONG表畅通pingping通过启动命令检查Redis
4、服务器状态默认端号6379netstat -nlt|grep 6379netstat -nlt|grep 6379/etc/redis/redis.conf配置件默认在/etc/redis/redis.confvim修改配置件 配置件较为长 可以使 vi 、vim的搜索功能进查找vimvi 、vim的搜索功能1 .vi打开Redis服务器的配置件redis.conf# # Redis配置件vi/etc/redis/redis.confRedis以守护进程运如果以守护进程运,则不会在命令阻塞,类似于服务如果以守护进程运,则当前终端被阻塞,法使 推荐改为yes,以守护进程运进配置件找到这 修改为以
5、下配置daemonize yesdaemonize yes2 .修改访问Redis的密码2 .修改访问Redis的密码使Java连接Redis必须添加密码#取消注释#取消注释requirepass 添加你的密码requirepass your_password3 .让Redis服务器被远程访问默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能。 配置件中有好处 类似的地 不要找错了配置件有好处bind 不要找错了概在69左右# 注 释 # 注 释 bind #bind 修改后,重启Redis服务器。service redis-server resta
6、rtservice redis-server restartredis-cliredis :6379 keys * (error) ERR operation notredis-cliredis :6379 keys * (error) ERR operation notpermittedredis-cli -a your_password redis :6379 keys *1) nameredis-cli -a your_password redis :6379 keys *1) name2).key配置完成后重新启动服务器配置完成后重新启动服务器# # 重启redis-server 的三
7、个命令 任选其即可sudo service redis-server restartsudo /etc/init.d/redis-server restartsudo redis-server /etc/redis/redis.confRedis关闭./redis-cli shutdown正常式关闭 Redis 会进持久化操作kill -9 进程号 强制关闭Redis服务端 不会进持久化操作 容易造成数据丢失ps -ef | grep -i redis运的进程号如果想要保证数据不造成丢失可以修改Redis配置件的save 持久化时间Ubuntu中使Redis客户端服务端设置密码后 客户端的连接
8、法必须带参数 ./redis-cli -h host -p port -a passwordredis-cli -h 00 -p 6379 -a 123456redis-cli -h 00 -p 6379 -a 123456host代表 连接的IP地址port 连接的端号password 密码本机(虚拟机本机)访问可以忽略IP地址 port忽略的话默认是6379Redis客户端常命令 String命令作命令作例del key根据key删除del userName 或 del key1 key2keys pattern通配符 *代表所有 user? 开头为user的keykey * 或 key
9、user?exists key判断个key是否存在返回值0或1expire key seconds给个key设置过期时间 单位:秒ttl key查询 kye的命周期返回值 -1:永久 -2:效persist key移除key的过期时间设置为永久有效select index切换到第index个数据库select 1 切换到第个数据库rename key newName修改key的名字rename key1 user1move key index把key移动到下标为index的数据库去move user1 1 把user1移动到下标为1的数据库type key查看key是什么类型FLUSHALL删
10、除所有数据库中所有的key于辞职时 删库跑路FLUSHDB删除当前数据库中所有的keyKey的命名规范key区分写 命令不区分写单个Key可以持512M的key不要太长尽量不能超过1024字节 不仅降低内存 还增长查询时间key也不要太短,太短的话key的可读性会降低在个项中key的命名规范尽量使统的命名格式 列如:user12 对应到表上就是 user表有 id,name,age属性 命名格式就可以是user:1:name 或 user:2:name 中间的数字为户的id 于区分数据: 号 为程序员的统规范 其他的符号也可以Redis的数据类型string 是redis的最基本的数据类型 是
11、进制安全的 个key对个value 单个key可以最存储512M的数据进制安全特点编码 解码在客户端进 执效率不需要频繁编码解码,不会出现乱码string类型常命令命令命令作例set Key创建个Keyset key1set Key value创建个Key且赋值set key1 123mset k1 v1 k2v2存多个key valuemget k1 k2取多个keysetnx key value当key不存在时才创建key存在时返回0setex keyseconds keyvaluekeysecondskey在, 那么 SETEX 命令将覆盖已有的值。getrange keystart e
12、nd根据下标取值getrange key 0 3 返回下标0到3的值strlen key查看字符串长度incr key每次增key的值+1decr key 减incrby key 增量值每次增key的增量值decyby keyget keys根据Key获取Valueget userName 返 回 nil 就是null应场景保存单个字符或字符串或JSON格式的数据计数器 点击量 粉丝数等等incr等指令本具有原性操作的特性所有完全可以redis的 增减操作实现计数的效果 假如有5个户同时点击那么 就要排队最后的值定是5Hash类型简介:RedisHash是个string类型的field 和va
13、lue的影视表,特别适合存储对象。每个hash可以存储(40多亿)个键值对,且占很少磁盘空间常命令命令命令作例hset key field value 赋值语法为指定的key设置fild和valuehset users:1 uname 张 三hmset key field value fieldvalue 赋值语法为指定的key设置fild和valuehmset users:1 uname 张三 uage 24 此命令会覆盖哈希表中已存在的域。hget key field 取值语法指定key 根据field取得valuehget users:1 unamehmget key field1 fi
14、eld2语法指定多个field获取多个valuehmget users:1 uname agehgetall key指定key获取key中所有的valuehgetallusers:1hkeys key指定key获取key中所有的 field名称hkeys users:1hlen key获取key中的共有多少个filedhlen key获取key中有多少个fieldhdel key1key2删除指定的keyhincrby key field increment给key中为数值的field增量hincrby users:1 age 10hincrbyfloat key filed incremen
15、t给key中为浮点数的field增量hincrby users:1 money 10.1hexists key field查看key中的field是否存在返回1或0hsetnx key field当field尚未存在于哈希表的情况下,将它的值如果哈希表 hash 不存在, 那么个新的哈希表将被创建并执设置为 value hsetnx 命令。hstrlen key field返回哈希表 key 中,field 值的字符串长度。hstrlen myhashf1应场景存储对象 Hash是最接近关系型数据库的类型不允许没有field为空的数据存在 如果个key的field被删完了那么这个key就会被r
16、edis回收t 表常命令命令命令作例lpush key valuevalue将个或多个值 value 插到列表 key 的表头LPUSH a b c 先进后出 返回的就是 c b a值可以重复lpushx key valuevalue当key存在时才添加否则什么都不做功能与lpush致rpush keyvaluevalue往表尾部添加数据与lpush刚好相反 插a b c 返回 a b crpushx keyvaluevalue当key存在时才添加否则什么都不做功能与lpushx刚好相反lpop key移除头元素第个元素rpop key与上相反lrem key value根据位置移除keylr
17、em greet 2 morning移除从表头到表尾,最先发现的2个 morning 元素被移除llen key查询key的长度lindex key index返回下表时index的元素没找到返回nillset key indexvalue把下表为index的key赋值该命令操作空列表(报错)索引超出列表长度(报错)lrange key startend区间查询LRANGE fp-language 0 1 0 -1代表查询所有ltrim key startend 命令end 命令BLPOP key key timeout区间删除作LTRIMalpha1-1删除下标为1到-1之间的key(下标0
18、)例阻塞查询BLPOP jobcommand 300当key不存在时会被阻塞,直到另客户端进添加操作300为等待秒数 如果超时还没有查到那么返回nilRPOPLPUSH1 集合2把第个集合的第个元素(RPOP)移除 并且添加到第个集合边(lpush添加)也可以把当前集合的最后个元素换位到当前集合第个位置(rpoplpush 集合1 集合1)MySQL的orderby排序分页任务队列集合常命令 序命令作命令作例sadd key valuevalue将个或多个元素添加到集合中当key不是集合类型的时候则会报错当key不存在则新创建包含value的集合sismember key value判断key
19、中是否包含该valuespop key移除key中随机个元素并返回srandmember keycount随机移除count个元素并返回当count没有指定就移除个元素并返回srem key value移除key中指定的value当key不是集合类型报错smove key newkeyvalue把个key中的指定value移动到新的key中scard key返回key中元素的数量smembers key返回可以中所有的成员sinter key key返回多个集合中的交集key1 1 2 3 key2 2 3 4 返回值 2 3 交集sinterstorenewKeykeykey中sunion
20、key key返回多个集合中的并集返回两个集合中所有的valueSUNIONSTOREnewKeykey合sdiff key key返回多个集合中的差集SDIFF peters_movies joes_movies合中有的 副集合没有的数据SDIFFSTORE newKey把多个集合的差集保存到新集合key中集合常命令 有序命令作命令作例SpringBoot整合Redis在pom.xml中添加依赖# # 此依赖被Spring官收录在spring-boot-starter-parent 中有版本号org.springframework.bootspring-boot-starter-data-r
21、edismonscommons-pool2在application.yml中添加配置springspring:redis:host: 02 # Redis服务器地址port: 6379 # Redis服务器连接端password: root # Redis服务器连接密码database : 0 # Redis数据库索引(0) lettuce:shutdown-timeout : 0 pool:max-active : 8 # 连接池最连接数(使负值表没有限制8max-wait: -1 #连接池最阻塞等待时间(使负值表没有限制-1max-idle: 8 # 8min-idle: 0 # 0上配置
22、的 jedis 和 lettuce是两种不同的Redis客户端Jedis 是直连模式,在多个线程间共享个 Jedis 实例时是线程不安全的,每个线程都去拿的 Jedis 实例,当连接数量增多时,物理连接成本就较了。Netty也没事,致意思就是个多线程的应可 以使同个连接实例,不担并发线程的数量。通过异步的式可以让我们更好地利系统资源。编写RedisConfig完整的配置类package cn.yufire.redis.config;import org.springframework .context.annotation .Bean;import org.springframework .c
23、ontext.annotation .Configuration ;import org.springframework .data.redis.connection .RedisConnectionFactory ; import org.springframework .data.redis.connection .jedis.JedisConnectionFactory ;import org.springframework .data.redis.connection .lettuce.LettuceConnectionFactory ; import org.springframew
24、ork .data.redis.core.RedisTemplate ;import org.springframework .data.redis.serializer.Jackson2JsonRedisSerializer ; import org.springframework .data.redis.serializer.StringRedisSerializer ;import org.springframework .data.redis.support .collections.RedisCollectionFactoryBean ;/* Description:* RedisC
25、onfig的配置类authoryufireversionv1.0.0* since 2020-02-21 21:37:46seecn.yufire.redis.config*/Configurationpublic class RedisConfig /*LettuceConnectionFactory连接池也可以使JedisConnectionFactory 需要引依赖和配置也可以使RedisConnectionFactoryRedis默认的连接池paramfactoryreturn*/Beanpublic RedisTemplate redisTemplate (LettuceConnec
26、tionFactory factory )RedisTemplate template = new RedisTemplate (); template .setConnectionFactory (factory);return template ;/Jackson2JsonRedisSerializer redisvalue值(的序列化式)Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer (Object.class);StringRedisSerializer stringRedisSeri
27、alizer = new StringRedisSerializer ();/ key采String的序列化式template .setKeySerializer(stringRedisSerializer );/ hash的key也采String的序列化式template .setHashKeySerializer(stringRedisSerializer );/ value序列化式采jacksontemplate .setValueSerializer(jacksonSeial);/ hash的value序列化式采jacksontemplate .setHashValueSerializ
28、er(jacksonSeial);template .afterPropertiesSet ();可以去上找个完整的RedisUtil具类 也可以使redisTemplate进操作使redisTemplate操作Redis/注RedisTemplate 模板Autowiredprivate RedisTemplate redisTemplate ;/测试插个对象到RedisTestpublic void userAddToRedis () throws JsonProcessingException User user = new User();user .setId(1);user .set
29、Name(张三);user .setPassword(123456 );user .setAge(18);ObjectMapper mapper = new ObjectMapper ();/使Jackosn把user对象转成json类型存RedisString userJson = mapper .writeValueAsString(user);/存RedisredisTemplate .opsForValue ().set(user,userJson);/从Redis取出User的json串String redisGetUserJson = redisTemplate .opsForVa
30、lue ().get(user);/使Jackson把json字符串转换为User对象User redisGetUser = mapper .readValue(redisGetUserJson , User.class);/打印System.out.println(redisGetUser );控制台输出redisTemplate法说明redisTemplateredisTemplate.opsForValue(); /操作字符串类型redisTemplate.opsForHash(); /操hash类型redisTemplate.opsForList(); /操List类型redisTem
31、plate.opsForSet();/操Set类型redisTemplate.opsForZSet(); /操作有set类型具体使的时候,你可以根据的数据类型选择相应的法即可,上有各种RedisUtil具类。普通Java项连接Redis添加添加Maven依赖redis.clientsjedis2.8.1org.springframework.dataspring-data-redis1.6.4.RELEASEorg.springframeworkspring-core4.3.20.RELEASEJedis jedis = new Jedis(32,6379);/ip Jedis jedis =
32、 new Jedis(32,6379);/ip 和 端 号jedis.auth(123456);/ 密码 Redis服务器必须设置密码/*PONGlinux6379端*/System.out.println(jedis.ping();/*/* 连接池连接 帮助我们管理连接*/获取连接池配置对象设置配置信息JedisPoolConfig config = new JedisPoolConfig();/设置最连接数config.setMaxTotal(30);/最空闲数config.setMaxIdle(10);/获得连接池JedisPool jedisPool = new JedisPool(config,32,6379);/获得核对象Jedis jedis2 = null;try jedis2 = jedisPool.getResource(); jedis2.auth(123456); / 指定密码/*get set jedis2.get(key);.*/ catch (Exception e) e.printStackTrace();finallyif (jedis2!=null) jedis2.close();/虚拟机 Redis服务器关闭时 释放pool资源if (jedisPool !=null) jedisPool.close();整合Spring后使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《计量日宣传》课件
- 《评价判据》课件
- 鼻结核的健康宣教
- 2021年机械密封行业中密控股分析报告
- 2021年化工行业分析报告
- 《机械制造基础》课件-05篇 第一单元 特种加工概述
- 《计算机检索基础周》课件
- 光过敏的临床护理
- 《供应商考核办法》课件
- 毛发苔藓的临床护理
- 习思想教材配套练习题 第一章 新时代坚持和发展中国特色社会主义
- 部编版一年级下册道德与法治第3课《我不拖拉》教案(含2课时)
- 眼科护理的国内外发展动态和趋势
- GB/T 43564-2023中小学合成材料面层田径场地
- 校园帮帮项目介绍
- 食品卫生健康教育知识讲座
- 安保维稳工作管理制度
- 人教版英语四年级上册重点语法总结
- 饲料厂常见事故和预防措施
- 重点专科五年发展规划(风湿科)
- Unit 4 What's the best movie theater Section B (2b) reading教学设计人教新目标八年级英语上册
评论
0/150
提交评论