成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

慕課網(wǎng)_《Redis入門》學習總結

leanxi / 1048人閱讀

摘要:時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。當對應的鏈表存在時,從左側插入數(shù)據(jù)。從右側插入數(shù)據(jù)。當系統(tǒng)在定時持久化之前出現(xiàn)宕機,還未來得及往硬盤寫入數(shù)據(jù),那數(shù)據(jù)就丟失了。當數(shù)據(jù)集過大時,可能會導致服務器停止幾百毫秒甚至是秒鐘。

時間:2017年05月21日星期日
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com
教學示例源碼:無
個人學習源碼:https://github.com/zccodere/s...

第一章:課程介紹 1-1 課程介紹

課程介紹

NoSQL的概述
Redis的概述
Redis的安裝和使用
Jedis的入門
Redis的數(shù)據(jù)類型
Keys的通用操作
Redis的特性
Redis的持久化
第二章:NoSQL概述 2-1 NoSQL的概述

什么是NoSQL

NoSQL = Not Only SQL
非關系型數(shù)據(jù)庫

為什么需要NoSQL

High performance 高并發(fā)讀寫
Huge Storage 海量數(shù)據(jù)的高效率存儲和訪問
High Scalability && High Availability 高可擴展性和高可用性

主流的NoSQL產(chǎn)品

NoSQL數(shù)據(jù)庫的四大分類

鍵值對(Key-Value)存儲:Redis
    優(yōu):快速查詢
    劣:存儲的數(shù)據(jù)缺少結構化
列存儲:HBase
    優(yōu):快速查詢、擴展性強
    劣:功能相對局限
文檔數(shù)據(jù)庫:MongoDB
    優(yōu):數(shù)據(jù)結構要求不是很嚴格
    劣:查詢性能不高、缺少統(tǒng)一的查詢語法
圖形數(shù)據(jù)庫:InfoGrid
    優(yōu):利用圖結構相關算法
    劣:需要對整個圖做計算才能得出結果、不容易做分布式集群方案

四類NoSQL數(shù)據(jù)庫比較

NoSQL的特點

易擴展
靈活的數(shù)據(jù)模型
大數(shù)據(jù)量、高性能
高可用
第三章:Redis概述 3-1 Redis的概述

Redis高性能鍵值對數(shù)據(jù)庫,支持的鍵值數(shù)據(jù)類型:

字符串類型
列表類型
有序集合類型
散列類型
集合類型

Redis的應用場景

緩存
任務隊列
網(wǎng)站訪問統(tǒng)計
數(shù)據(jù)過期處理
應用排行榜
分布式集群架構中的session分離
第四章:Redis的安裝和使用 4-1 Redis的安裝

Windows安裝Redis搭建環(huán)境

虛擬機:VMware 10.0.2
Linux系統(tǒng):CentOS-6.5
SSH客戶端:SecureCRT 7.3 , SecureFX 7.3

推薦使用在Linux系統(tǒng)下docker安裝Redis,需先安裝docker

下載鏡像
docker pull hub.c.163.com/library/redis:latest
運行鏡像
docker run --name myredis -d -p 6379:6379 hub.c.163.com/library/redis
進入容器
docker exec -it CONTAINERID /bin/bash
連接Redis
redis-cli 172.17.0.1:6379 或 redis-cli
發(fā)送命令
發(fā)送ping,回復PONG即代表Redis安裝成功

第五章:Jedis的入門 5-1 Jedis入門

Jedis介紹

Jedis是Redis官方首選的Java客戶端開發(fā)包
https://github.com/xetorthio/jedis

測試項目環(huán)境搭建

使用gradle作為構建工具。詳情見源碼。

代碼演示:

package com.myimooc.jedis;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Jedis的測試
 * Created by ChangComputer on 2017/5/21.
 */
public class JedisDemo1 {

    /**
     * 單實例的測試
     */
    @Test
    public void demo1(){
        // 1.設置IP地址和端口
        Jedis jedis = new Jedis("192.168.77.128",6379);
        // 2.保存數(shù)據(jù)
        jedis.set("name","myimooc");
        // 3.獲取數(shù)據(jù)
        String value = jedis.get("name");

        System.out.println(value);

        // 4.釋放資源
        jedis.close();
    }

    /**
     * 使用連接池方式連接
     */
    @Test
    public void demo2(){
        // 獲得連接池的配置對象
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 設置最大連接數(shù)
        jedisPoolConfig.setMaxTotal(30);
        // 設置最大空閑連接數(shù)
        jedisPoolConfig.setMaxIdle(10);
        // 獲得連接池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.77.128",6379);
        // 通過連接池獲得連接
        Jedis jedis = jedisPool.getResource();
        // 設置數(shù)據(jù)
        jedis.set("name","張三");
        // 獲取數(shù)據(jù)
        String value = jedis.get("name");
        System.out.println(value);
        // 釋放資源
        jedis.close();
        // 釋放連接池
        jedisPool.close();

    }
}
第六章:Redis的數(shù)據(jù)結構 6-1 字符串

五種數(shù)據(jù)類型:

字符串(String)
哈希(hash)
字符串列表(list)
字符串集合(set)
有序字符串集合(sorted set)
字符串集合(set)

Key定義的注意點:

不要過長:最好不要超過1024個字節(jié)
不要過短:太短不利于閱讀,如a
統(tǒng)一的命令規(guī)范

存儲String

二進制安全的,存入和獲取的數(shù)據(jù)相同
Value最多可以容納的數(shù)據(jù)長度是512M

存儲String常用命令

賦值:set key value
取值:get key
獲取值:getset key value
刪除:del key
數(shù)值增減:incr key  decr key
擴展命令:incrby key number  decrby key number
追加命令:append key str
6-2 哈希

存儲Hash

String Key和String Value的map容器
每一個Hash可以存儲4294967295個鍵值對

存儲Hash常用命令:

賦值:hset name key value  hmset name key value key value
取值:hget name key  hmget name key key  hgetall name
刪除:hdel name key  del name
增加數(shù)字:hincrby name key number
自學命令:hexists name key  hlen name  hkeys name  hvals name
6-3 list

存儲list

ArrayList使用數(shù)組方式
LinkedList使用雙向鏈接方式
雙向鏈表中增加數(shù)據(jù)
雙向鏈表中刪除數(shù)據(jù)

存儲list常用命令

兩端添加

lpush key value1 value2 value3
將value1和value2和value3放入為key的鏈表,當key不存在時,會自動創(chuàng)建該鏈表。
    當key對應的鏈表存在時,從左側插入數(shù)據(jù)。
rpush key value1 value2 value 3
從右側插入數(shù)據(jù)。

查看列表

lrange key start end
查看為key的鏈表,從指定start開始,到end結束

兩端彈出

lpop key
左邊彈出,返回并彈出指定的key所關聯(lián)鏈表的頭部(第一個)元素
rpop key
右邊彈出,返回并彈出指定的key所關聯(lián)鏈表的尾部(最后一個)元素

獲取列表元素個數(shù)

llen key
返回指定key所關聯(lián)鏈表的長度,當key不存在時,返回0

擴展命令

lpushx key value
僅當指定的key關聯(lián)鏈表存在時,在頭部插入value
rpushx key value
僅當指定的key關聯(lián)鏈表存在時,在尾部插入value
lrem key count value
在指定的key關聯(lián)的鏈表中,刪除count個value
    當count小于0時,從尾到頭刪除
    當count等于0時,刪除所有
    當count大于0時,從頭到尾刪除
lset key index value
在指定的key關聯(lián)的鏈表中,修改下標為index的值為value
linsert key before value newvalue
在指定的key關聯(lián)的鏈表中,在value之前插入newvalue
linsert key after value newvalue
在指定的key關聯(lián)的鏈表中,在value之后插入newvalue
rpoplpush key1 key2
將key1里面的第一個值彈出壓入key2頭部

rpoplpush使用場景

6-4 set

存儲Set

和List類型不同是,Set集合中不允許出現(xiàn)重復的元素
Set可包含的最大元素數(shù)量是4294967295

添加元素

sadd key value1 value2 value3
將value1和value2和value3添加到key的set集合

刪除元素

srem key value1 value2
刪除為key的set集合里面的value1和value2

獲得集合中的元素

smembers key
獲取為key的set集合中的元素
sismember key value1
判斷value1是否存在于key的set集合中。1、存在;0、不存在

集合中的差集運算

sdiff key1 key2
獲取在key1中存在,在key2中不存在的元素。跟key的順序相關

集合中的交集運算

sinter key1 key2
獲取在key1和key2中都存在的元素

集合中的并集運算

sunion key1 key2
獲取key1中和key2中的所有元素,元素重復時,會去掉一個重復的元素

擴展命令

scard key
獲得為key的set集合中成員的數(shù)量
srandmember key
隨機返回為key的set集合中的某個成員
sdiffstore newKey key1 key2
將兩個集合key1和key2差集的元素存儲到另一個集合newKey中
sinterstore newKey key1 key2
將兩個集合key1和key2交集的元素存儲到另一個集合newKey中
sunionstore newKey key1 key2
將兩個集合key1和key2并集的元素存儲到另一個集合newKey中

使用場景

跟蹤一些具有唯一性的數(shù)據(jù)。比如訪問某個博客的唯一IP地址的信息,僅需要在每次訪問該博客的時候,將訪問者的IP存入redis當中。充分利用set類型的服務器端聚合操作的方便、高效的特性,可以用于維護數(shù)據(jù)對象之間的關聯(lián)關系。比如:所有購買某一電子設備的客戶的ID,被存儲到一個指定的set當中,而購買另外一種電子產(chǎn)品客戶的ID,被存儲到另外一個set當中,如果此時想獲得有哪些客戶同時購買了這兩種商品,那么這時候,可以使用它們的交集操作即可。
6-5 sorted-set

Sorted-Set概述

Sorted-Sets和Sets類型極為相似,它們都是字符串的集合,都不允許重復的成員出現(xiàn)在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分數(shù)(score)與之關聯(lián),Redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。然而需要額外指出的是,盡管Sorted-Sets中的成員必須是唯一的,但是分數(shù)(score)卻是可以重復的。在Sorted-Set中添加、刪除或更新一個成員都是非常快速的操作,其時間復雜度為集合中成員數(shù)量的對數(shù)。由于Sorted-Sets中的成員在集合中的位置是有序的,因此,即便是訪問位于集合中部的成員也仍然是非常高效的。事實上,Redis所具有的這一特征在很多其它類型的數(shù)據(jù)庫中是很難實現(xiàn)的,換句話說,在該點上要想達到和Redis同樣的高效,在其它數(shù)據(jù)庫中進行建模是非常困難的。

Sorted-Set常用命令

添加元素

zadd key score1 value1 score2 value2 score3 value3
添加三個元素到名為key的Sorted-Set集合中。每一個元素都有一個分數(shù)score和值value

獲得元素

zscore key value
獲得名為key的Sorted-Set集合中value對應的分數(shù)score
zcard key
獲得名為key的Sorted-Set集合中成員的數(shù)量

刪除元素

zrem key value1 value2
刪除名為key的Sorted-Set集合中的值value1和value2元素

范圍查詢

zrange key start end
查找在start和end之間的元素,默認由分數(shù)從小到大排序
zrange key start end withscores
查找在start和end之間的元素,并顯示元素的分數(shù)
zrevrange key start end withscores
查找在start和end之間的元素,并顯示元素的分數(shù),分數(shù)從大到小排序
zremrangebyrank key start end
按照指定范圍刪除元素
zremrangebyscore key startscore endscore
按照指定分數(shù)的范圍刪除元素

擴展命令

zrangebyscore key startscore endscore withscore limit startindex count
返回分數(shù)在指定范圍之間的元素,分數(shù)從小到大排序,從下標為startindex開始,顯示count個
zincrby key addscore value
給指定value元素的分數(shù)score增加addscore分
zcount key startscore endscore
獲取分數(shù)在某個范圍之間元素的個數(shù)

使用場景

在游戲的排名上。大型游戲的積分排行榜,每當玩家的分數(shù)發(fā)生變化時,
    可以執(zhí)行zadd命令去更新玩家的分數(shù)
微博上的熱點話題
構建索引數(shù)據(jù)
第七章:Redis的通用命令 7-1 Redis的Keys的通用操作

Keys通用操作

keys *
獲得所有的key
keys my?
獲得所有以my開頭的key
del key1 key2 key3
刪除key1和key2和key3
exists key
查看key是否存在,1、存在;0、不存在
rename oldkey newkey
重命名key,將oldkey重命名為newkey
expire key 1000
設置過期時間。單位:秒
ttl key
查看key所剩超時的時間,如果key沒有設置過期時間,則返回-1
type key
獲得指定key的數(shù)據(jù)類型
第八章:Redis的事務 8-1 Redis的特性

相關特性

多數(shù)據(jù)庫
Redis事務

多數(shù)據(jù)庫

一個Redis實例可以包含多個數(shù)據(jù)庫,客戶端可以指定連接哪個數(shù)據(jù)庫。一個Redis實例最多可以提供16個數(shù)據(jù)庫,下標從0到15,客戶端默認連接0號數(shù)據(jù)庫。通過select選擇連接到哪個數(shù)據(jù)庫。

多數(shù)據(jù)庫相關命令

select 1
連接到1號數(shù)據(jù)庫
move key 1
將key移動到1號數(shù)據(jù)庫

Redis事務相關命令

multi
開啟事務,后面執(zhí)行的命令會被存到命令隊列當中,直到執(zhí)行提交事務命令
exec
提交事務,命令隊列里面的命令會被原子化執(zhí)行
discard
回滾事務
第九章:Redis的持久化 9-1 Redis的持久化的概述

持久化使用的方式

RDB持久化:默認支持,不需要進行配置。在指定的時間間隔內(nèi),將內(nèi)存中的數(shù)據(jù)及快照寫入到磁盤
AOC持久化:將以日志形式,記錄服務器所處理的每一個操作,在redis服務器啟動之初,
    會讀取該文件,重新構建數(shù)據(jù)庫,保證啟動后數(shù)據(jù)的完整性
無持久化:通過配置來禁用redis服務器持久化的功能,這時候,redis就是一個緩存機制
同時使用RDB和AOF
9-2 RDB方式持久化

RDB方式持久化優(yōu)勢

只包含一個文件,方便文件備份
對于災難恢復而言,RDB是一個非常不錯的選擇
性能最大化,由子進程完成持久化操作
相比AOF,大數(shù)據(jù)集啟動效率更高

RDB方式持久化缺點

如果想保證數(shù)據(jù)的高可用性,即最大限度的避免數(shù)據(jù)的丟失,RDB將不是一個很好的選擇。當系統(tǒng)在定時持久化之前出現(xiàn)宕機,還未來得及往硬盤寫入數(shù)據(jù),那數(shù)據(jù)就丟失了。當數(shù)據(jù)集過大時,可能會導致服務器停止幾百毫秒甚至是1秒鐘。

RDB方式持久化配置

redis.conf
save 900 1:每900秒,至少有1個key發(fā)生變化,會持久化一次
save 300 10:每300秒,至少有10個key發(fā)生變化,會持久化一次
save 60 10000:每60秒,至少有10000個key發(fā)生變化,會持久化一次
dbfilename:配置持久化文件名稱
dir:配置持久化文件保存路徑,默認./配置文件當前路徑
9-3 AOF方式持久化

AOF方式持久化優(yōu)勢

帶來更高的數(shù)據(jù)安全性,每秒同步或每修改同步或不同步
對于日志文件寫入操作采用追加模式,當寫入過程中出現(xiàn)宕機時,不會破壞已經(jīng)存在的內(nèi)容
如果日志過大,redis會自動啟動重寫機制
AOF包含格式清晰、易于理解的日志文件記錄所有的修改操作,通過該文件可完成數(shù)據(jù)重建

AOF方式持久化劣勢

對于相同數(shù)據(jù)集而言,AOF的文件要比RDB的文件大一些
根據(jù)同步策略的不同,運行效率要低于RDB

AOF方式持久化配置

redis.conf
appendonly:配置AOF持久化是否啟用,默認no:不啟用
appendfilename:配置AOC持久化文件名稱
appendfsync always:每修改一次同步一次,默認不啟用,為了更安全,推薦使用
appendfsync everysec:每秒同步一次,默認啟用
appendfsync no:不同步,默認不啟用
第十章:課程總結 10-1 Redis的課程總結

課程總結

介紹了什么是NoSQL
介紹了什么是Redis
Redis的安裝以及簡單使用
Jedis的入門,重點掌握,需要通過程序去操作Redis
介紹了Redis常用的數(shù)據(jù)類型,主要:字符串和哈希
了解keys的通用操作
了解Redis的多數(shù)據(jù)庫和事務
了解Redis的持久化

最主要的還是:要會使用程序操作Redis

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/67102.html

相關文章

  • 課網(wǎng)_《RxJava與RxAndroid基礎入門學習總結

    時間:2017年10月16日星期一說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程簡介 1-1 課程介紹 本門課程的主要內(nèi)容 RxJava是什么 RxAndroid是什么 RxJava常用操作符(重點、難點) 怎樣在項目中使用RxJava和RxAndroid 如何學...

    劉明 評論0 收藏0
  • 課網(wǎng)_《SpringMVC數(shù)據(jù)綁定入門學習總結

    摘要:數(shù)據(jù)綁定入門學習總結時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學示例源碼個人學習源碼第一章課程介紹數(shù)據(jù)綁定入門概述數(shù)據(jù)綁定概念來自百度百科簡單綁定是將一個用戶界面元素控件的屬性綁定到一個類型對象實例上的某個屬性的方法。 《SpringMVC數(shù)據(jù)綁定入門》學習總結 時間:2017年2月19日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.co...

    Karrdy 評論0 收藏0

發(fā)表評論

0條評論

leanxi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<