MySQL redis學習與應用
諸如mysql等關聯式資料庫,在資料儲存在高並發情況下讀寫效能有所限制,Nosql(非關係型資料庫)便應運而生,彌補了關係型資料庫的不足。
【簡介】
redis是作為一種key-value儲存形式的Nosql資料庫,得到廣泛的應用,它支援主從複製,事務處理,樂觀鎖複雜事務控制,持久化,發布及訂閱訊息等特性。
#【資料型別介紹】
# redis的資料型別相對關係型資料庫較為簡單,分為5大類型,分別為:string,hashs,lists,sets,sorted set。
1. string類型是二元、安全的資料類型,可以存放jps圖片或序列化對,常用的redis資料庫指令為:
<span style="font-family:KaiTi_GB2312;"> </span> <span style="font-family:SimSun;">a. Set name lijie ----设置name=lijie b. Setnx 设置如果name存在,则返回0,设置不成功(nx--not exit) c. Setex 指定有效期:set haircolor 10 red --10秒失效 d. Setrange name 6 gmail.com ----从第6个开始设置 e. Mset key1 lijie1 key2 lijei2 key3 lijie3 --设置多个键值对 f. get --获得字符 g. Getrange eamil 0 5 从下标为0到5的值 h. Mget--批量返回 i. Incr key6 --自增 j. Incrby key5 6--以6来进行自增 k. Decr/decrby l. Append key1 .net 在key1后面增加.net m. Strlen--返回长度</span><span style="font-family:KaiTi_GB2312;"> </span>
2. hashs型別佔用的記憶體較少,常用指令:
<span style="font-family:SimSun;">a. Hset--hset user:001 name lijie b. Hsetnx--hsetnx user:002 name lamp c. Hmset---hmset user:003 name lijie age 20 sex 1 d. Hincrby--自增 e. Hexists--判断是否存在 hexits user:002 name f. Hlen----返回所有键数量 g. Hdel--hdel user:003 age h. Hkeys --hkeys user:001 i. Hvals---hvals user:003 j. Hgetall---获取所有fileds和value</span>
3. lists資料型別分為鍊錶結構與佇列兩種資料結構,常用指令:
#
<span style="font-family:SimSun;">a. Lpush--从头部压入元素:lpush list1 "hello"--栈 b. Lrang myliist 0 -1 从头部一直去不到尾部 c. Rpush---rpush list2 "hello"---队列 d. Linsert---linsert list2 before hello word e. Lset--指定下标赋值:lset list2 1 my f. Lrem--从list 中删除n个和value相同的值 g. Ipop从头弹出元素 h. Rpop 从尾部 i. Rpoplpush j. Lindex---lindex list2 2 k. Llen---返回长度</span>
4. sets類型支援並集,交集,叉集等操作,差用指令:
#
<span style="font-family:SimSun;">a. Sadd--sadd myset1 one b. Smembers--查看 c. Srem --srem myset2 "one" d. Spop--随机弹出 e. Sdiff--两个集合的差集 f. Sdiffstor---叉集存储到指定sets里面:sdiffstore myset4 myset2 myset3 g. Siner--返回交集/sinnerstore h. Sunion--并集/ i. Smove---将第一个set中元素剪切到第二个set中 smove myset1 myset8 three j. Scard --查看个数 k. Sismemeber---测试元素是不是set中元素 l. Srandmember--随机返回元素不会删除</span>
5. sort set是有序集合:
<span style="font-family:SimSun;">a. Zadd---zadd myzset “one” b. 取值:zrange myzet 0 -1 withscores(显示顺序) c. Zrem--zrem myzset two d. Zincrby--zincrby sset1 2 one--对顺序号进行增加 e. Zrank--返回 索引:zrank myset3 two f. Zrevrank g. Zrerange--降序排序 h. Zrangebyscore--按照范围返回:zrangebyscore sset2 2 4 with scores i. Zcount--返回数量 zcount seet2 2 4 j. Zcard --返回 k. Zremrangebyrank--按照索引删除 l. Zremrangebyscore--按照顺序删除</span>
#【java應用程式】
## redis在java中應用需要引入jar包:import redis.clients.jedis.Jedis; # # 程式碼中直接使用:Jedis client=new Jedis("ip位址",6379);,既可實現redis連接,當使用連接池時,建立連接池類別:
package com.tgb.itoo.exam.students.controller; import java.util.ResourceBundle; import org.springframework.util.Assert; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolTest { private static JedisPool jedisPool; private static JedisPoolConfig initPoolConfig(){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 控制一个pool最多有多少个可用的的jedis实例 // jedisPoolConfig.setMaxActive(1000); // 最大能够保持空闲状态的对象数 jedisPoolConfig.setMaxIdle(300); // 超时时间 jedisPoolConfig.setMaxWaitMillis(1000); // 在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的; jedisPoolConfig.setTestOnBorrow(true); // 在还会给pool时,是否提前进行validate操作 jedisPoolConfig.setTestOnReturn(true); return jedisPoolConfig; } /** * 初始化jedis连接池 * <br>------------------------------<br> */ public static void before() { JedisPoolConfig jedisPoolConfig = initPoolConfig(); // 属性文件读取参数信息 ResourceBundle bundle = ResourceBundle.getBundle("redis_config"); String host = bundle.getString("redis.host"); int port = Integer.valueOf(bundle.getString("redis.port")); int timeout = Integer.valueOf(bundle.getString("redis.timeout")); String password = bundle.getString("redis.password"); // 构造连接池 jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); } public void testSet() { Jedis jedis = null; // 从池中获取一个jedis实例 try { jedis = jedisPool.getResource(); jedis.set("blog_pool", "java2000_wl"); } catch (Exception e) { // 销毁对象 jedisPool.returnBrokenResource(jedis); // Assert.fail(e.getMessage()); } finally { // 还会到连接池 jedisPool.returnResource(jedis); } } }
管道技術應用
redis在連續執行寫入作業時,為減少開啟關閉資料庫次數,創建管道可以提升效能,實戰使用:
#
Pipeline pipeline=client.pipelined(); for (TemplateDetail templateDetail : templateDetails) { List<QuestionMain> questionMains=templateDetail.getQuestionMainList(); for (QuestionMain questionMain : questionMains) { if(null!=questionMain){ String redisKey=studenInfo.getStudentId()+"_"+studenInfo.getExamination_id()+"_"+questionMain.getId()+"_exam"; try { pipeline.lpush(redisKey,JsonUtils.objectToJson(questionMain)); pipeline.expire(redisKey, 7200); } catch (IOException e) { e.printStackTrace(); } } } } pipeline.sync();//管道执行

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

Redis在數據存儲和管理中扮演著關鍵角色,通過其多種數據結構和持久化機製成為現代應用的核心。 1)Redis支持字符串、列表、集合、有序集合和哈希表等數據結構,適用於緩存和復雜業務邏輯。 2)通過RDB和AOF兩種持久化方式,Redis確保數據的可靠存儲和快速恢復。

SpringBoot中使用Redis緩存OAuth2Authorization對像在SpringBoot應用中,使用SpringSecurityOAuth2AuthorizationServer...

安全地處理JSON中的函數和正則表達式在前端開發中,經常需要將JavaScript...

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

使用RedisTemplate進行批量查詢時為何返回值為空?在使用RedisTemplate進行批量查詢操作時,可能會遇到返回的結果�...
