国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

慕課網_《Redis入門》學習總結

leanxi / 1040人閱讀

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

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

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

課程介紹

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

什么是NoSQL

NoSQL = Not Only SQL
非關系型數據庫

為什么需要NoSQL

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

主流的NoSQL產品

NoSQL數據庫的四大分類

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

四類NoSQL數據庫比較

NoSQL的特點

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

Redis高性能鍵值對數據庫,支持的鍵值數據類型:

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

Redis的應用場景

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

Windows安裝Redis搭建環境

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

推薦使用在Linux系統下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
發送命令
發送ping,回復PONG即代表Redis安裝成功

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

Jedis介紹

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

測試項目環境搭建

使用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.保存數據
        jedis.set("name","myimooc");
        // 3.獲取數據
        String value = jedis.get("name");

        System.out.println(value);

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

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

    }
}
第六章:Redis的數據結構 6-1 字符串

五種數據類型:

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

Key定義的注意點:

不要過長:最好不要超過1024個字節
不要過短:太短不利于閱讀,如a
統一的命令規范

存儲String

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

存儲String常用命令

賦值:set key value
取值:get key
獲取值:getset key value
刪除:del key
數值增減: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
增加數字:hincrby name key number
自學命令:hexists name key  hlen name  hkeys name  hvals name
6-3 list

存儲list

ArrayList使用數組方式
LinkedList使用雙向鏈接方式
雙向鏈表中增加數據
雙向鏈表中刪除數據

存儲list常用命令

兩端添加

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

查看列表

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

兩端彈出

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

獲取列表元素個數

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

擴展命令

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

rpoplpush使用場景

6-4 set

存儲Set

和List類型不同是,Set集合中不允許出現重復的元素
Set可包含的最大元素數量是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集合中成員的數量
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中

使用場景

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

Sorted-Set概述

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

Sorted-Set常用命令

添加元素

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

獲得元素

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

刪除元素

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

范圍查詢

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

擴展命令

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

使用場景

在游戲的排名上。大型游戲的積分排行榜,每當玩家的分數發生變化時,
    可以執行zadd命令去更新玩家的分數
微博上的熱點話題
構建索引數據
第七章: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的數據類型
第八章:Redis的事務 8-1 Redis的特性

相關特性

多數據庫
Redis事務

多數據庫

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

多數據庫相關命令

select 1
連接到1號數據庫
move key 1
將key移動到1號數據庫

Redis事務相關命令

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

持久化使用的方式

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

RDB方式持久化優勢

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

RDB方式持久化缺點

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

RDB方式持久化配置

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

AOF方式持久化優勢

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

AOF方式持久化劣勢

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

AOF方式持久化配置

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

課程總結

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

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

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

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

相關文章

  • 課網_《RxJava與RxAndroid基礎入門學習總結

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

    劉明 評論0 收藏0
  • 課網_《SpringMVC數據綁定入門學習總結

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

    Karrdy 評論0 收藏0

發表評論

0條評論

leanxi

|高級講師

TA的文章

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