① 如何连接redis数据库
1、在配置文件redis.conf中把绑定的Ip注释掉
到此就连接成功了。
② redis 怎么切换到一个数据库
语法
redis Select 命令基本语法如下:
redis 127.0.0.1:6379> SELECT index
可用版本
>= 1.0.0
返回值
总是返回 OK 。
实例
redis 127.0.0.1:6379> SET db_number 0 # 默认使用 0 号数据库OK redis 127.0.0.1:6379> SELECT 1 # 使用 1 号数据库OK redis 127.0.0.1:6379[1]> GET db_number # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1](nil)
③ redis getset 命令怎么使用方法
[Redis] redis-cli 命令总结
Redis提供丰富命令(command)数据库各种数据类型进行操作些commandLinux终端使用
编程比使用Redis Java语言包些命令都应面Redis提供命令做总结
官网命令列表: (英文)
1、连接操作相关命令
quit:关闭连接(connection)
auth:简单密码认证
2、value操作命令
exists(key):确认key否存
del(key):删除key
type(key):返值类型
keys(pattern):返满足给定pattern所key
randomkey:随机返key空间key
rename(oldname, newname):key由oldname重命名newname若newname存则删除newname表示key
dbsize:返前数据库key数目
expire:设定key间(s)
ttl:获key间
select(index):按索引查询
move(key, dbindex):前数据库key转移dbindex索引数据库
flushdb:删除前选择数据库所key
flushall:删除所数据库所key
3、String操作命令
set(key, value):给数据库名称keystring赋予值value
get(key):返数据库名称keystringvalue
getset(key, value):给名称keystring赋予value
mget(key1, key2,…, key N):返库string(名称key1key2…)value
setnx(key, value):存名称keystring则向库添加string名称key值value
setex(key, time, value):向库添加string(名称key值value)同设定期间time
mset(key1, value1, key2, value2,…key N, value N):同给string赋值名称key istring赋值value i
msetnx(key1, value1, key2, value2,…key N, value N):所名称key istring都存则向库添加string
名称key i赋值value i
incr(key):名称keystring增1操作
incrby(key, integer):名称keystring增加integer
decr(key):名称keystring减1操作
decrby(key, integer):名称keystring减少integer
append(key, value):名称keystring值附加value
substr(key, start, end):返名称keystringvalue串
4、List操作命令
rpush(key, value):名称keylist尾添加值value元素
lpush(key, value):名称keylist添加值value 元素
llen(key):返名称keylist度
lrange(key, start, end):返名称keyliststart至end间元素(标0始同)
ltrim(key, start, end):截取名称keylist保留start至end间元素
lindex(key, index):返名称keylistindex位置元素
lset(key, index, value):给名称keylistindex位置元素赋值value
lrem(key, count, value):删除count名称keylist值value元素
count0删除所值value元素count>0至尾删除count值value元素count<0尾删除|count|值value元素
lpop(key):返并删除名称keylist首元素 rpop(key):返并删除名称keylist尾元素
blpop(key1, key2,… key N, timeout):lpop命令block版本
即timeout0若遇名称key ilist存或该list空则命令结束
timeout>0则遇述情况等待timeout秒问题没解决则keyi+1始list执行pop操作
brpop(key1, key2,… key N, timeout):rpopblock版本参考命令
rpoplpush(srckey, dstkey):返并删除名称srckeylist尾元素并该元素添加名称dstkeylist部
5、Set操作命令
sadd(key, member):向名称keyset添加元素member
srem(key, member) :删除名称keyset元素member
spop(key) :随机返并删除名称keyset元素
smove(srckey, dstkey, member) :member元素名称srckey集合移名称dstkey集合
scard(key) :返名称keyset基数
sismember(key, member) :测试member否名称keyset元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, key1, key2,…key N) :求交集并交集保存dstkey集合
sunion(key1, key2,…key N) :求并集
sunionstore(dstkey, key1, key2,…key N) :求并集并并集保存dstkey集合
sdiff(key1, key2,…key N) :求差集
sdiffstore(dstkey, key1, key2,…key N) :求差集并差集保存dstkey集合
smembers(key) :返名称keyset所元素
srandmember(key) :随机返名称keyset元素
6、zset(sorted set)操作命令
zadd(key, score, member):向名称keyzset添加元素memberscore用于排序该元素已经存则根据score更新该元素顺序
zrem(key, member) :删除名称keyzset元素member
zincrby(key, increment, member) :名称keyzset已经存元素member则该元素score增加increment;
否则向集合添加该元素其score值increment
zrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)
若没member元素返nil
zrevrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)
若没member元素返nil
zrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素
zrevrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素
zrangebyscore(key, min, max):返名称keyzsetscore >= min且score <= max所元素
zcard(key):返名称keyzset基数 zscore(key, element):返名称keyzset元素element
score zremrangebyrank(key, min, max):删除名称keyzsetrank >= min且rank <= max所元素
zremrangebyscore(key, min, max) :删除名称keyzsetscore >= min且score <= max所元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):Nzset求并集交集
并集合保存dstkeyN于集合每元素score进行AGGREGATE运算前都要乘于WEIGHT参数
没提供WEIGHT默认1默认AGGREGATESUM即结集合元素score所集合应元素进行SUM运算值MINMAX指
结集合元素score所集合应元素值值
7、Hash操作命令
hset(key, field, value):向名称keyhash添加元素fieldvalue
hget(key, field):返名称keyhashfield应value
hmget(key, field1, …,field N):返名称keyhashfield i应value
hmset(key, field1, value1,…,field N, value N):向名称keyhash添加元素field ivalue i
hincrby(key, field, integer):名称keyhashfieldvalue增加integer
hexists(key, field):名称keyhash否存键field域
hdel(key, field):删除名称keyhash键field域
hlen(key):返名称keyhash元素数
hkeys(key):返名称keyhash所键
hvals(key):返名称keyhash所键应value
hgetall(key):返名称keyhash所键(field)及其应value
8、持久化
save:数据同步保存磁盘
bgsave:数据异步保存磁盘
lastsave:返功数据保存磁盘Unix戳
shundown:数据同步保存磁盘关闭服务
9、远程服务控制
info:提供服务器信息统计
monitor:实转储收请求
slaveof:改变复制策略设置
config:运行配置Redis服务器
④ 如何高效地向Redis插入大量的数据
官方在2.6版本推出了一个新的功能-pipe mode,即将支持Redis协议的文本文件直接通过pipe导入到服务端。
说来拗口,具体实现步骤如下:
1. 新建一个文本文件,包含redis命令
SET Key0 Value0
SET Key1 Value1
...
SET KeyN ValueN
如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以
2. 将这些命令转化成Redis Protocol。
因为Redis管道功能支持的是Redis Protocol,而不是直接的Redis命令。
如何转化,可参考后面的脚本。
3. 利用管道插入
cat data.txt | redis-cli --pipe
⑤ redis怎么创建一个key\
redis的值有5种类型,不同的类型有不同的命令来获取: 字符直接 get key 队列 左端弹出一个元素 LPOP key 哈希 HGET key field 集合 SMEMBERS key 返回集合中的所有元素 有序集合ZRANGE key start stop 更详细的命令可以查看redis常用命令。
⑥ redis没有创建数据库的命令吗
应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。
String tbname = "login";
//获取mysql表主键值--redis启动时
long id = MySQL.getID(tbname);
//设置redis主键值--redis启动时
redisService.set(tbname, String.valueOf(id));
System.out.println(id);
long l = redisService.incr(tbname);
System.out.println(l);
Login login = new Login();
login.setId(l);
login.setName("redis");
redisService.hmset(String.valueOf(login.getId()), login);
boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')");
/**
*
* 队列处理器更新mysql失败:
*
* 清除缓存数据,同时主键值自减
*/
if (!b){
redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
}
System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
System.out.println(redisService.get(tbname));