目錄
【簡介】" >【簡介】
#【資料型別介紹】" >#【資料型別介紹】
首頁 資料庫 mysql教程 MySQL redis學習與應用

MySQL redis學習與應用

Feb 28, 2017 pm 01:22 PM

        諸如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();//管道执行
登入後複製
 以上就是MySQL redis學習與應用的內容,更多相關內容請關注PHP中文網(www.php.cn)!






本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

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

MySQL與其他編程語言:一種比較 MySQL與其他編程語言:一種比較 Apr 19, 2025 am 12:22 AM

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

如何利用Redis緩存方案高效實現產品排行榜列表的需求? 如何利用Redis緩存方案高效實現產品排行榜列表的需求? Apr 19, 2025 pm 11:36 PM

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

REDIS的角色:探索數據存儲和管理功能 REDIS的角色:探索數據存儲和管理功能 Apr 22, 2025 am 12:10 AM

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

Spring Boot中OAuth2Authorization對象Redis緩存失敗怎麼辦? Spring Boot中OAuth2Authorization對象Redis緩存失敗怎麼辦? Apr 19, 2025 pm 08:03 PM

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

如何安全地將包含函數和正則表達式的JavaScript對象存儲到數據庫並恢復? 如何安全地將包含函數和正則表達式的JavaScript對象存儲到數據庫並恢復? Apr 19, 2025 pm 11:09 PM

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

在MySQL中解釋外鍵的目的。 在MySQL中解釋外鍵的目的。 Apr 25, 2025 am 12:17 AM

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

使用RedisTemplate進行批量查詢時,為什麼返回值會為空? 使用RedisTemplate進行批量查詢時,為什麼返回值會為空? Apr 19, 2025 pm 10:15 PM

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

See all articles