初學Redis,redis配置、終端操作、界面操作、java連接redis。
1、Redis介紹
1.1、什么是NoSql
為了解決高并發、高可用、高可擴展。大數據存儲等一些列問
提的產生的數據庫結局方案。
NoSql,叫做非關系型數據庫,他的全名Not only sql。它不能
替代關系型數據庫,只能作為關系型數據庫的一個良好補充。
1.2 什么是redis
redis是使用c語言開發的一個高性能鍵值數據庫。redis可以
通過一些鍵值類型來存儲數據。
String字符串類型
map散列類型
list列表類型
set集合類型
sortedset 有序集合類型
1.3 redis啟動
三個文件:
將前兩個解壓到D盤redis目錄下
通過在終端cd /d? 路徑 找到redis解壓目錄
在解壓目錄當中執行? redis-server.exe redis.conf
redis默認自帶16個子庫,默認使用db0
切換子庫命令:select index
1.4鏈接redis
1、通過終端在redis路徑下執行redis-cli.exe連接到redis(如上圖)
2、通過圖形界面連接到redis
安裝上面的第三個文件
3、jedis客戶端
支持java語言連接(后面寫)
1.5 redis的使用
終端命令:
賦值:
set? key? value
取值:
get? key
取值并賦值
getset key value
設置/獲取多個鍵值
mset key value key value key value...
mget key key key key ...
刪除
del key
數值的增減
遞增數字:當存儲的字符串是整數時,redis提供了一個實用的命令
incr,其作用是讓當前鍵值遞增,并返回遞增后的值。
incr key
增加指定的整數
incrby key increment
遞減數值
decr num
遞減指定整數:
decrby num decrement
2、其他命令
1、向尾部追加值
append的作用是向鍵值的末尾追加value.如果鍵不存在則將
該鍵的值設置為value.
append str1 "world!"
2、獲取字符串長度
strlen命令返回值得長度,如果鍵不存在則返回0
strlen key
3、自增主鍵
商品編號、訂單采用string的遞增數字特性生成
定義商品編號key: items:id
incr items:id
4、賦值hset命令,不區分插入和更新操作,當執行插入操作時,
hset命令返回1,當執行更新操作時返回0
一次只能設置一個字段
hset key filed value
一次可以設置多個字段值
hmset key1 filed1 value1? filed2 vlaue2 ...
hmset user age 20 username lisi
當字段不存在時賦值,類似hset,區別在于如果字段存在,該命令
不執行任何操作
hsetnx key file value
hsetnx user age 30
如果user中沒有age字段則設置為30,否則不執行任何操作
hsetnx user salary 20000
5、取值
一次只能獲取一個字段值
hget key filed
一次獲取多個字段值
hmget key filed1 filed2...
一次獲取所有字段
hgetall key
6、刪除字段
可以刪除一個或多個字段,返回值是被刪除的字段個數
hdel key filed...
7、增加數字
hincrby key filed increment
8、判斷字段是否存在
hexists key filed
返回1說明該字段存在,0說明該字段不存在
9、只獲取字段名或字段值
hkeys key? :查看key對象當中的所有字段名
hvals key? :查看key對象當中的所有字段值
10、獲取字段數量
hlen key :查看key對象當中的屬性數量
應用:
1、存儲商品信息
商品字段:商品id、商品名稱、商品描述、商品庫存、商品評價
hmset items:1001 id 3 name apple price 999.99
獲取商品信息
hget items:1001 id 查詢該條商品的指定列
hgetall items:1001 查詢該條商品的所有信息
List:
ArrayList和linkedList的區別
ArrayList是使用數組存儲數據,特點:查詢快、增刪慢
LinkedList是使用雙向鏈表存儲數據,特點:增刪快,查詢慢
但是查詢鏈表兩端數據比較快
redis的list是采用鏈表來存儲的,所以對于redis的list數據
類型的操作,是操作List的兩端數據來操作的
1、向列表兩端增加元素
向列表左邊增加元素
lpush key value ...
向列表右側增加元素
rpush key value ...
2、 查看列表
lrange命令是列表類型最常用的命令之一,獲取列表中某一片段,返回???? start、stop之間的所有元素(包含兩端元素),索引從0開始,索引可以?? ?是負數,如:'-1'代表最后邊的一個元素
lrange key start stop
3、從列表兩端彈出元素
LPOP命令從列表左邊彈出一個元素,會分兩步完成
第一步:是將列表左邊的元素從列表中刪除
第二步是返回被移除的元素值
LPOP key
RPOP key
4、獲取列表中的元素個數
llen key
5、刪除列表中指定的值
LREM 命令會刪除列表中前count個值為value的元素,返回實際刪除
元素個數。根據count值得不同,該命令執行方式會有所不同
當count>0時,lrem 會從列表左側開始刪除
當count<0時,lrem 會從列表后邊開始刪除
當count=0時,lrem 刪除所有值為value元素
lrem key count value
6、獲取/設置指定索引的元素值
LINDEX key index
設置指定索引的元素值
lset list:1 1 5
命令請自行測試,貼出我測試的:
D:\redis>redis-cli.exe
127.0.0.1:6379> SELECT 7
OK
127.0.0.1:6379[7]> set str 123
OK
127.0.0.1:6379[7]> get str
"123"
127.0.0.1:6379[7]> getset str2 12345
(nil)
127.0.0.1:6379[7]> get str2
"12345"
127.0.0.1:6379[7]> mset str3 fuzui str3 wwze
OK
127.0.0.1:6379[7]> mget str3 str3
1) "wwze"
2) "wwze"
127.0.0.1:6379[7]> del str3
(integer) 1
127.0.0.1:6379[7]> del str
(integer) 1
127.0.0.1:6379[7]> incr num
(integer) 1
127.0.0.1:6379[7]> incr num
(integer) 2
127.0.0.1:6379[7]> incrby num 3
(integer) 5
127.0.0.1:6379[7]> incr num
(integer) 6
127.0.0.1:6379[7]> incrby num 3
(integer) 9
127.0.0.1:6379[7]> decr num
(integer) 8
127.0.0.1:6379[7]> decrby num 4
(integer) 4
127.0.0.1:6379[7]> append str2 world
(integer) 10
127.0.0.1:6379[7]> get str2
"12345world"
127.0.0.1:6379[7]> strlen str2
(integer) 10
127.0.0.1:6379[7]> strlen dd
(integer) 0
127.0.0.1:6379[7]> append str1 hello
(integer) 5
127.0.0.1:6379[7]> get str1
"hello"
127.0.0.1:6379[7]> incr items:id
(integer) 1
127.0.0.1:6379[7]> incr items:id
(integer) 2
127.0.0.1:6379[7]> incr items:id
(integer) 3
127.0.0.1:6379[7]> hset user username wangze
(integer) 1
127.0.0.1:6379[7]> hmset manager name fuzui sex female
OK
127.0.0.1:6379[7]> hsetnx user username fuzui
(integer) 0
127.0.0.1:6379[7]> hsetnx user age 22
(integer) 1
127.0.0.1:6379[7]> hget user username
"wangze"
127.0.0.1:6379[7]> hget user age
"22"
127.0.0.1:6379[7]> hmget user username age
1) "wangze"
2) "22"
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
127.0.0.1:6379[7]> hdel user age
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
127.0.0.1:6379[7]> hset user age 22
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
127.0.0.1:6379[7]> hset user salary 18000
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
5) "salary"
6) "18000"
127.0.0.1:6379[7]> hincrby user age 2
(integer) 24
127.0.0.1:6379[7]> hincrby user username 2
(error) ERR hash value is not an integer
127.0.0.1:6379[7]> hexists user age
(integer) 1
127.0.0.1:6379[7]> hexists user class
(integer) 0
127.0.0.1:6379[7]> hkeys user
1) "username"
2) "age"
3) "salary"
127.0.0.1:6379[7]> hvals user
1) "wangze"
2) "24"
3) "18000"
127.0.0.1:6379[7]> hlen user
(integer) 3
127.0.0.1:6379[7]> hmset items:1001 id 3 name a[[;e price 1399
OK
127.0.0.1:6379[7]> hget items:1001 id
"3"
127.0.0.1:6379[7]> hgetall items:1001
1) "id"
2) "3"
3) "name"
4) "a[[;e"
5) "price"
6) "1399"
127.0.0.1:6379[7]> hmset items:1001 name apple
OK
127.0.0.1:6379[7]> hgetall items:1001
1) "id"
2) "3"
3) "name"
4) "apple"
5) "price"
6) "1399"
127.0.0.1:6379[7]> lpush list:1 1 2 3 4 5
(integer) 5
127.0.0.1:6379[7]> rpush list:1 a b c d e
(integer) 10
127.0.0.1:6379[7]> lrange list:1 0 7
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "a"
7) "b"
8) "c"
127.0.0.1:6379[7]> lrange list:1 0 -2
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "a"
7) "b"
8) "c"
9) "d"
127.0.0.1:6379[7]> lpop list:1 0 1
(error) ERR wrong number of arguments for 'lpop' command
127.0.0.1:6379[7]> lpop list:1
"5"
127.0.0.1:6379[7]> lpop list:1
"4"
127.0.0.1:6379[7]> rpop ;list:1
(nil)
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "2"
3) "1"
4) "a"
5) "b"
6) "c"
7) "d"
8) "e"
127.0.0.1:6379[7]> rpop list:1
"e"
127.0.0.1:6379[7]> llen list:1
(integer) 7
127.0.0.1:6379[7]> lrem list:1 2 2
(integer) 1
127.0.0.1:6379[7]> lrangger list:1 0 -1
(error) ERR unknown command 'lrangger'
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "1"
3) "a"
4) "b"
5) "c"
6) "d"
127.0.0.1:6379[7]> lindex list:1 3
"b"
127.0.0.1:6379[7]> lset list:1 4 w
OK
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "1"
3) "a"
4) "b"
5) "w"
6) "d"
127.0.0.1:6379[7]>
[點擊并拖拽以移動]
這只是一小部分命令~
使用java連接redis:
1.eclipse創建一個java project
2.導包
3. 創建test類
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisTest {
@Test
public void jedisClient() {
//使用該對象連接到redis
Jedis jedis = new Jedis("localhost",6379);
//在redis當中存值
jedis.set("s2", "789456");
//通過redis取值
String result = jedis.get("s2");
System.out.println(result);
//關閉redis連接對象
jedis.close();
}
@Test
public void getValues() {
//使用該對象連接到redis
Jedis jedis = new Jedis("localhost",6379);
//在redis當中存值
jedis.set("s2", "789456");
//通過redis取值
String result = jedis.get("s2");
System.out.println(result);
//關閉redis連接對象
jedis.close();
}
@Test
//使用jedis連接池連接redis服務器
public void jedisPool() {
JedisPool pool = new JedisPool("localhost",6379);
//通過連接池獲取jedis
Jedis jedis = pool.getResource();
String result = jedis.get("s2");
System.out.println(result);
//關閉jedis客戶端
jedis.close();
}
}
4.測試
5.使用spring+redis
(1)導入spring相關包
(2)配置spring配置文件applicationContext.xml
(3)寫入一個方法
@Test
public void springJedisPool() {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JedisPool pool = (JedisPool)ac.getBean("jedisPool");
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("name", "fuzui");
String name = jedis.get("name");
System.out.println(name);
}catch(Exception e) {
e.printStackTrace();
}finally {
if(jedis != null) {
jedis.close();
}
}
}
(4)測試
解釋都在代碼注釋當中了~
學習redis的第一天.
redis下載:
csdn下載:1積分下載redis
百度網盤免費下載:redis工具
提取碼:za75
java連接redis需要的包:
csdn下載:1積分下載jedis
百度網盤免費下載:jedis包
提取碼:47ro
spring完整5.0.7包:
csdn下載:1積分下載spring包
百度網盤免費下載:spring包
提取碼:2wtu
有問題或bug可以留言,一天內回復~
Java Redis
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。