@(數(shù)據(jù)庫)
Redis
C語言開發(fā)的非關(guān)系型鍵值對數(shù)據(jù)庫

image.png
1 基本介紹
- redis 的數(shù)據(jù)結(jié)構(gòu)
- redis存儲的實:key-value格式的數(shù)據(jù),其中key都是字符串,value鼬5種不同的數(shù)據(jù)結(jié)構(gòu)
-
value的數(shù)據(jù)結(jié)構(gòu)
1. 字符串類型 String
2. 哈希類型 hash:map格式
3. 列表類型 list: Linkedlist格式
4. 集合類型 set
5. 有序集合類型 sortedset
image.png
-
- redis存儲的實:key-value格式的數(shù)據(jù),其中key都是字符串,value鼬5種不同的數(shù)據(jù)結(jié)構(gòu)
2 具體使用
2.1.1 字符串類型 String
- 存儲 set key value
- 獲取 get key
- 刪除 del key
2.1.2 哈希類型 hash
- 存儲 hset key field value(相當(dāng)于map中鍵值)
- 獲取 hget key field
- hget key field: 獲取指定的field對應(yīng)的值
- hgetall key :獲取所有的field 和value
- 刪除 hdel key field
2.1.3 列表類型 list
添加一個元素到列表的頭部(左邊)或者尾部(右邊),允許重復(fù)
- 添加
- lpush key value: 將元素加入到列表的左邊
- rpush key value: 將元素添加到列表的右邊
- 獲取
- lrange key start end :范圍獲取
- 刪除
- lpop key: 刪除最左邊的元素并將元素返回
- rpop key: 刪除最右邊的元素,并將元素返回
2.1.4 集合類型 set 不允許重復(fù)(無序)
- 存儲 :sadd key value
- 獲?。簊members key :獲取set集合中的所有元素
- 刪除:srem key value :刪除set集合中的某個元素
2.1.5 有序集合類型 sortedset 不允許重復(fù),且元素有序
- 存儲:zadd key score value
- 獲取 :zrange key start end
- zrange key start end withscores 連帶分?jǐn)?shù)一塊取出來
- 刪除:zrem key value
2.1.6 通用命令
-
keys *:查詢所有的鍵 -
type key:獲取鍵對應(yīng)的value的類型 -
del key:刪除指定的key value
3 Redis 持久化
redis是一個內(nèi)存數(shù)據(jù)庫,當(dāng)Redis服務(wù)器重啟后,數(shù)據(jù)會丟失,我們可以將Reids內(nèi)存中的數(shù)據(jù)持久化保存到硬盤的文件
- redis持久化機(jī)制:
- RDB:默認(rèn)方式,再一定時間間隔內(nèi),檢測key的變化情況,然后持久化數(shù)據(jù)(保存在目錄下以
.rdb后綴)- 編輯
redis.windows.config文件 - 重新啟動redis服務(wù)器,并指定配置文件名稱(
redis -server.exe redis.windows.config)
- 編輯
- AOF:日志記錄的方式,可以記錄每一條命令的操作,可以每一次命令操作之后,持久化數(shù)據(jù)(保存在
.aof文件中)- 編輯redis.windows.conf 文件
- appendonly no(默認(rèn))改為appendonly yes(開啟aof)
-
# appendfsync always每一次操作都進(jìn)行持久化 -
appendfsync everysec每隔一秒進(jìn)行一次持久化 -
# appendfsync no不進(jìn)行持久化
-
- RDB:默認(rèn)方式,再一定時間間隔內(nèi),檢測key的變化情況,然后持久化數(shù)據(jù)(保存在目錄下以
4 Jedis
Java 用來操作Redis數(shù)據(jù)庫的
4.1.1 快速入門
- 導(dǎo)入jar包
- 代碼是吸納
//獲取連接
Jedis jedis = new Jedis("localhost",6379);
//操作
jedis.set("username","zhangsna");
//關(guān)閉連接
jedis.close();
4.1.2 操作五種數(shù)據(jù)結(jié)構(gòu)
操作的命令喝命令行操作基本一致
4.1.3 jedis連接池:JedisPool
- 使用
- 創(chuàng)建JedisPoolConfig 配置對象(可以根據(jù)電腦配置一些信息,將對象給JedisPool連接池對象)
- 創(chuàng)建JedisPool連接池對象
- 使用getResouce獲取連接
- 使用
- 關(guān)閉(其實是歸還到連接池)
public class JedisPoolUtil {
private static JedisPool jedisPool ;
//初始化這個類就加載這個代碼塊
static {
//讀取配置文件(在配置文件中配置相關(guān)項,修改更方便)
InputStream inputStream = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
//創(chuàng)建Properties 對象
Properties properties = new Properties();
//關(guān)聯(lián)文件
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
//獲取數(shù)據(jù),設(shè)置到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
//初始化JedisPool
jedisPool = new JedisPool(config,properties.getProperty("host"), Integer.parseInt(properties.getProperty("port"))) ;
}
//獲取連接的方法
public static Jedis getJedisPool(){
return jedisPool.getResource();
}
}
