自己開發了一個股票智能分析軟件,功能很強大,需要的點擊下面的鏈接獲取:
https://www.cnblogs.com/bclshuai/p/11380657.html
redis介紹詳解附實例代碼--看一篇就夠了
目錄
1 簡介... 1
1.1 概述... 1
1.2 特點... 1
1.3 應用場景... 2
2 Redis的數據類型及主要特性... 2
3 redis命令行操作... 3
3.1 服務器操作... 3
3.2 String字符串操作... 4
3.3 列表操作... 4
3.4 set集合的操作... 6
3.5 hash哈希操作... 7
3.6 發布/訂閱操作... 8
4 redis代碼實例... 9
4.1 Python 操作 redis代碼實例... 9
4.2 java代碼實例... 11
1 簡介
1.1 概述
redis是基於內存的數據庫,redis是一個使用ANSI C編寫的開源、包含多種數據結構、支持網絡、基於內存、可選持久性的鍵值對存儲數據庫。用於高並發、快速訪問的應用場景。因為關系型數據的瓶頸一般是在磁盤的I/O上。
1.2 特點
- 高並發:基於內存運行,性能高效,支持高並發。
- 分布式:支持分布式,理論上可以無限擴展
- 類型豐富:key-value存儲系統,支持多種數據類型
- 通用化:開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API
- 可持久化,可以將內存中的數據定時同步到磁盤中。
1.3 應用場景
(1) 消息緩存服務器,通過訂閱和發布的方式傳遞消息。
(2) 內存數據庫,存儲一些需要快速訪問的數據,低延時高並發。緩存系統(“熱點”數據:高頻讀、低頻寫)、計數器、消息隊列系統、排行榜、社交網絡和實時系統。
2 Redis的數據類型及主要特性
Redis提供的數據類型主要分為5種自有類型和一種自定義類型,這5種自有類型包括:String類型、哈希map類型、list列表類型、set集合類型和zset順序集合類型。redis是一個服務,打開cmd,通過redis-cli.exe -h 127.0.0.1 -p 6379命令連接服務器,然后通過命令行命令往redis內寫數據和讀數據。
redis可以作為一個內存數據庫。redis也可以當作一個消息緩存服務器,通過訂閱和發布的方式傳遞消息。
類型 |
簡介 |
命令 |
String |
它是一個二進制安全的字符串,意味着它不僅能夠存儲字符串、還能存儲圖片、視頻等多種類型, 最大長度支持512M。 |
|
Hash |
該類型是由field和關聯的value組成的map。其中,field和value都是字符串類型的。 |
|
List |
該類型是一個插入順序排序的字符串元素集合, 基於雙鏈表實現。 |
|
Set |
Set類型是一種無順序集合, 它和List類型最大的區別是:集合中的元素沒有順序, 且元素是唯一的。底層是通過哈希表實現的。 |
|
Sorted set |
ZSet是一種有序集合類型,每個元素都會關聯一個double類型的分數權值,通過這個權值來為集合中的成員進行從小到大的排序。與Set類型一樣,其底層也是通過哈希表實現的 |
|
3 redis命令行操作
3.1 服務器操作
(1)啟動redis
1 |
sudo service redis-server start |
(2)連接上redis-server
1 |
redis-cli -h [ip] -p [端口] |
3.2 String字符串操作
(1)添加
1 2 3 |
set key value 如: set username xiaotuo |
將字符串值value關聯到key。如果key已經持有其他值,set命令就覆寫舊值,無視其類型。並且默認的過期時間是永久,即永遠不會過期。
(2)刪除
1 2 3 |
del key 如: del username |
(3) 設置過期時間
1 |
expire key timeout(單位為秒) |
(4)查看過期時間
1 2 3 |
ttl key 如: ttl username |
(5)查看當前redis中的所有key
1 |
keys * |
3.3 列表操作
(1)在列表左邊添加元素:lpush key value
- 將值value插入到列表key的表頭。如果key不存在,一個空列表會被創建並執行lpush操作。當key存在但不是列表類型時,將返回一個錯誤。
(2)在列表右邊添加元素:rpush key value
- 將值value插入到列表key的表尾。如果key不存在,一個空列表會被創建並執行RPUSH操作。當key存在但不是列表類型時,返回一個錯誤。
(3)查看列表中的元素:lrange key start stop
- 返回列表key中指定區間內的元素,區間以偏移量start和stop指定,如果要左邊的第一個到最后的一個lrange key 0 -1。
(4)移除列表中的元素
- 移除並返回列表key的頭元素:lpop key
- 移除並返回列表的尾元素:rpop key
- 移除並返回列表key的中間元素:lrem key count value
- 將刪除key這個列表中,count個值為value的元素
(5)指定返回第幾個元素:lindex key index
- 將返回key這個列表中,索引為index的這個元素。
- 獲取列表中的元素個數
1 2 3 |
llen key 如: llen languages |
- 刪除指定的元素
1 2 3 |
lrem key count value 如: lrem languages 0 php |
根據參數 count 的值,移除列表中與參數 value 相等的元素。count的值可以是以下幾種
- count > 0:從表頭開始向表尾搜索,移除與value相等的元素,數量為count
- count < 0:從表尾開始向表頭搜索,移除與 value相等的元素,數量為count的絕對值
- count = 0:移除表中所有與value 相等的值
- 添加元素
3.4 set集合的操作
1 2 3 |
sadd set value1 value2.... 如: sadd team xiaotuo datuo |
- 查看元素
1 2 3 |
smembeers set 如: smembers team |
- 移除元素
1 2 3 |
srem set member... 如: srem team xiaotuo datuo |
- 查看集合中的元素個數
1 2 3 |
scard set 如: scard team1 |
- 獲取多個集合的交集
1 2 3 |
sinter set1 set2 如: sinter team1 team2 |
- 獲取多個集合的並集
1 2 3 |
sunion set1 set2 如: sunion team1 team2 |
- 獲取多個集合的差集
1 2 3 |
sdiff set1 set2 如: sdiff team1 team2 |
3.5 hash哈希操作
- 添加一個新值
1 2 3 |
hset key field value 如: hset website baidu baidu.com |
將哈希表key中的域field的值設為value。
如果key不存在,一個新的哈希表被創建並進行 HSET操作。如果域 field已經存在於哈希表中,舊值將被覆蓋。
- 獲取哈希中的field對應的值
1 2 3 |
hget key field 如: hget website baidu |
- 刪除field中的某個field
1 2 3 |
hdel key field 如: hdel website baidu |
- 獲取某個哈希中所有的field和value
1 2 3 |
hgetall key 如: hgetall website |
- 獲取某個哈希中所有的field
1 2 3 |
hkeys key 如: hkeys website |
- 獲取某個哈希中所有的值
1 2 3 |
hvals key 如: hvals website |
- 判斷哈希中是否存在某個field
1 2 3 |
hexists key field 如: hexists website baidu |
- 獲取哈希中總共的鍵值對
1 2 3 |
hlen field 如: hlen website |
3.6 發布/訂閱操作
- 給某個頻道發布消息
1 |
publish channel message |
- 訂閱某個頻道的消息
1 |
subscribe channel |
4 redis代碼實例
4.1 Python 操作 redis代碼實例
- 安裝
python-redis:pip install redis
- 新建一個文件比如
redis_test.py
,然后初始化一個redis
實例變量,並且在ubuntu
虛擬機中開啟redis
。比如虛擬機的ip
地址為192.168.174.130
。示例代碼如下:
1 2 3 4 |
|
- 對字符串的操作:操作
redis
的方法名稱,跟之前使用redis-cli
一樣,現就一些常用的來做個簡單介紹,示例代碼如下(承接以上的代碼)
1 2 3 4 5 6 7 8 9 10 11 |
|
- 對列表的操作:同字符串操作,所有方法的名稱跟使用
redis-cli
操作是一樣的:
1 2 3 4 5 6 7 8 9 10 |
|
- 對集合的操作:
1 2 3 4 5 6 7 8 9 10 |
|
- 對哈希(
hash
)的操作:
1 2 3 4 5 6 7 8 |
|
- 事務(管道)操作:
redis
支持事務操作,也即一些操作只有統一完成,才能算完成。否則都執行失敗,用python
操作redis
也是非常簡單,示例代碼如下:
1 2 3 4 5 6 7 8 |
|
4.2 java代碼實例
https://www.jianshu.com/p/5596c3a4978d
參考文獻
https://www.cnblogs.com/renshaoqi/p/10617238.html
https://www.cnblogs.com/powertoolsteam/p/redis.html
https://www.jianshu.com/p/5596c3a4978d