Ⅰ redis存儲對象大小2m
Redis 存儲字元串和對象
1 測試類
import redis.clients.RedisClinet;
import redis.clients.SerializeUtil;
import redis.clients.jedis.Jedis;
public class Test {
/**
* Administrator
* @param args
*/
public static void main(String[] args) {
// 操作單獨的文本串
Jedis redis= new Jedis( "10.2.31.38", 6379);
redis.set( "key", "value");
System. out.println(redis.get( "key"));
System. out.println(redis.del( "key"));
// 操作實體類對象
Goods good= new Goods(); // 這個Goods實體我就不寫了啊
good.setName( "洗衣機" );
good.setNum(400);
good.setPrice(19l);
redis.set( "good".getBytes(), SerializeUtil. serialize(good));
byte[] value = redis.get( "good".getBytes());
Object object = SerializeUtil. unserialize(value);
if(object!= null){
Goods goods=(Goods) object;
System. out.println(goods.getName());
System. out.println(goods.getNum());
System. out.println(goods.getPrice());
}
System. out.println(redis.del( "good".getBytes()));
// 操作實體類對象2(實際上和上面是一樣的)
String key= "goods-key";
Goods g= new Goods();
g.setName( "電風扇--d" );
g.setNum(200);
String temp=RedisClinet. getInstance().set(g, key);
System. out.println(temp);
Object o=RedisClinet. getInstance().get(key);
if(o!= null)
{
Goods g1=(Goods)o;
System. out.println(g1.getName());
System. out.println(g1.getNum());
}
System. out.println(RedisClinet. getInstance().del(key));
}
}
2 RedisClinet 客戶端類
package redis.clients;
import redis.clients.jedis.Jedis;
/**
*
* @author ajun
*
*/
public class RedisClinet {
private static final String ip= "10.2.31.38";
private static final int port=6379;
protected static RedisClinet redis = new RedisClinet ();
protected static Jedis jedis = new Jedis( ip, port);;
static {
}
protected RedisClinet(){
System. out.println( " init Redis ");
}
public static RedisClinet getInstance()
{
return redis;
}
/**set Object*/
public String set(Object object,String key)
{
return jedis.set(key.getBytes(), SerializeUtil.serialize(object));
}
/**get Object*/
public Object get(String key)
{
byte[] value = jedis.get(key.getBytes());
return SerializeUtil. unserialize(value);
}
/**delete a key**/
public boolean del(String key)
{
return jedis.del(key.getBytes())>0;
}
}
3 序列化工具類
/**
*
*/
package redis.clients;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
* @author Administrator
*
*/
public class SerializeUtil {
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
}
return null;
}
public static Object unserialize( byte[] bytes) {
ByteArrayInputStream s = null;
try {
// 反序列化
s = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(s);
return ois.readObject();
} catch (Exception e) {
}
return null;
}
}
Ⅱ redis 訂閱消息 存儲了嗎
基於事件訂閱的模式,比如 EventBus類的組件產品。但是往往設計比較復雜。
如果依賴於 Redis做事件消息推送。那就大大簡化了這種設計模式,而且性能也比較客觀。
Redis在 2.0之後的版本中 實現了 事件推送的 pub/sub命令!
Ⅲ Redis的落地(本地存儲)是怎麼做的
把官方文檔好好看看吧,沒多少的。
1. save 60 1000 指的是,如果60s內有超過1000個寫請求,則redis會調用一次fsync保證數據寫回磁碟。
For example, this configuration will make Redis automatically mp the dataset to disk every 60 seconds if at least 1000 keys changed:
save 60 1000
2. 取決於你使用AOF還是RDB模式。AOF模式(實際上就是所有請求的log)會自動重建(但是很慢,因為要從頭開始),而RDB模式則可能會出現文件損壞(所以官方推薦定時備份)。
Ⅳ redis是怎麼存儲數據的
是人為存進去的。
先從redis取,如果沒有則從資料庫取,然後會回寫到redis中,這樣下次可以繼續從redis區
Ⅳ redis怎麼存儲
redis是一個性能非常優秀的內存資料庫,通過key-value存儲系統。
和Memcached類似,它支持存儲的value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希類型)。
這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。
與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Ⅵ redis存儲幾個g的數據
首先看到 Redis 官方的說法是:『A String value can be at max 512 Megabytes in length.』。過大的 key 和 value 有兩個問題:Redis 是一個內存資料庫,如果容量過大的 key 和 value 首先會導致伺服器中的內存碎片。這會影響 Redis 的內存分配的效率,進一步導致內存的使用率下降。容量過大的 key 和 value 還有這樣幾個影響:a. 這些過大的數據需要更多的時間去傳輸數據b. 過大的數據傳輸可能會導致其他的請求超時如果 A 的響應數據過大,它可能會吃掉其他請求的超時時間。如下圖例子,如果 A 的響應數據過大,它會吃掉其他請求的超時時間
Ⅶ 如何往redis中存儲數據 java
可以把組裝好了得map數據轉成json字元串,然後存到redis裡面,從redis取出來之後再轉回來使用
Ⅷ Redis存儲格式
redis目前提供四種數據類型:string,list,set及zset(sorted set)。
redis使用了兩種文件格式:全量數據和增量請求。全量數據格式是把內存中的數據寫入磁碟,便於下次讀取文件進行載入;增量請求文件則是把內存中的數據序列化為操作請求,用於讀取文件進行replay得到數據,序列化的操作包括SET、RPUSH、SADD、ZADD。redis的存儲分為內存存儲、磁碟存儲和log文件三部分,配置文件中有三個參數對其進行配置。save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。appendonly yes/no ,appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在於內存中。appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統進行數據緩存同步到磁碟,always表示每次更新操作後手動調用fsync()將數據寫到磁碟,everysec表示每秒同步一次。
Ⅸ redis怎麼存儲json數據
redis、memcached只能存字元串,要把數據序列化成字元串,才可以存進去,取出來再反序列化。
Ⅹ 如何查詢redis存儲的所有數據
使用redis的腳本功能實現redis中數據簡單查詢,有需要的朋友可以參考下。
在redis的設計中,key是一切,對於redis是可見的,而value對於redis來說就是一個位元組數組,redis並不知道你的value中存儲的是什麼