方法有很多,给你说两个常用的吧,都是基于关系型数据库的。如果你用面向对象数据库,那么直接就可以存进去了。这里假设你的数组元素是字符串。
直接把数组映射到关系型数据库中:建个表,只有两列,id和value。存的时候,数组下标对应的就是id,元素值就存到value列里面。
单数据值转换:数据库表有两列,name和value,name是数组变量名,value用来存这个数组。存之前,先把数组转成一个单一数据串,你可以转成单一字符串(例如["abc","def","ghi"]的形式),或者转成字节串,然后存到value列里面。读的时候可以利用动态编程的特性把这个字符串或字节串再赋值给相应的变量,就会直接转换回数组。现代编程语言大多数都支持动态编程,比如java、C#、Python等等。
将一个数组存入数据库和使用的语言有关系。通常的做法是将数组的内容转换后传递到和语言相关的数据处理方法中进行处理。
涉及到的数据转换的方法:
1:可以转换为json格式
[{key:1},{key:2}]
2:可以转换为xml
<values>
<key>1</key><key>2</key>
</values>
数据处理方法解析转换后的字符串,执行数据库保存 *** 作。
1、导出redis
[plain] view plain copy
#!/bin/bash
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=1
KEYNAME=redis:hash:*
KEYFILE=key.txt
echo "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $KEYFILE
OUTFILE=valuelist.txt
TEMPFILE=$OUTFILE.tmp
echo > $TEMPFILE
for key in `cat $KEYFILE`
do
echo $key
#echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE
echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE
done
2、整理导出的结果[plain] view plain copy
cat $TEMPFILE|xargs -n 2|awk -F" " -v KEYNAME=$KEYNAME '{print "HSET "KEYNAME " " $1, "\""$2"\""}' > $OUTFILE
其中的xargs -n 2是把2行合成一行,换行符用空格代替然后用awk按空格分开,$1是keynam $2是key的值
再次转换成HSET的格式,其中用到KEYNAME变量,这个要用-v预先定义。
最后转化为 HSET KEYNAME KEY "VALUE"格式。
3、导入转换的结果
[plain] view plain copy
cat $OUTFILE | redis-cli -h localhost -p 6379
二、直接用Redis的Dump和Restore导出和导入
[plain] view plain copy
redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)