irpas技术客

Redis常用命令以及java代码控制Redis_秃头老表_java redis命令

未知 1631

常用命令:? ?Linux环境下 =======================================================================

服务器启动:./redis-server ../redis.conf &? 客户端启动: ./redis-cli 服务器关闭:./redis-cli shutdown? (最大的执行效率为:10w/s) -------------------------------------------------------------------------- 中文乱码问题解决方法:启动客户端输入 ./redis-cli --raw? ========================================================================== 1.基本密令: ? ?ping ?查看是否链接到服务器 ? ?dbsize 查看数据库中的数据量 redis默认有16个数据库 (修改数量改redis.conf文件) ? ?select (1-16) 切换数据库 ? ?flushdb ?清空当前数据库 ? ?exit/quit ? ? 退出客户端 ? ?keys * ? ?查看所有的key (支持统配符:keys k* ,keys wo?d) ? ?exists key key (判断是否存在key) ? ?ttl key (查看还剩的存活时间) 默认永久 ? ?expire key n ?设置key的存活时间n秒 ----------------------------------------------------------------------- *****解决redis内存不管的方式:换内存大的redis,分存到多个redis服务器***** ----------------------------------------------------------------------- ? ?type key 显示key对应的key的数据类型 ? ?del key key key 删除对应的key和value值

2.数据类型的命令(redis可以存放任何形式的字符串) ------------------String----------------------------------------------- ? set key value ?存放 ? get key ? ? ? ?拿出 ? incr key ? ? ? ?将key的对应的整数+1 ? decr key ? ? ? ?将key的对应的整数-1 ? key不存在时默认创建并赋值为0,然后加减1 ? append key value 追加 ? strlen key 求长度 ? getrange key x y ?取x到y位的字符 (x<y) ? setrange key x value ?从x位开始替换 (替换的字符串时value值) ? mset key1 value1 key2 value2 同时设置多个key ? mget key1 key2 同时设置多个key? ------------------------Hash(一般存放的是java对象)------------------------? ?hset key filed value ? 设置hash数据的key和value ? flied相当于map中的key ?hget key filed ? ? ? ? ?获取对应的hash数据值 ?hmset key filed1 value1 filed2 value2 设置多个对象和值 ?hmget key filed1 filed2 ? ? 获取多个字段的值 ?hgetall key ? ? ? ? ? ? ? ? 显示所有的字段的值 ?hdel ? key filed ? ? ? ? ? ?删除对应的字段值 ?hkeys ?key ? ? ? ? ? ? ? ? ?显示所有的key ?hvals ?key ? ? ? ? ? ? ? ? ?显示所有的值 ?hexists key firled ? ? ? ? ?检查是否存在 ? ? ? ? ? ? ? ? ? ? ?? ---------------------------List----------------------------------------- ?(rpush)lpush key values ? ? 按顺序存放values值 注意添加的顺序 ? lrange key start n ? ? ? ? ?从start开始取子串 ? lindex key index ? ? ? ? ? ?取出指定的下标的值 ? llen key ? ? ? ? ? ? ? ? ? ?统计长度 ? lrem key count n ? ? ? ? ? ?删除count个n成员 ? lset key index value ? ? ? ?替换index的值 ? linsert key before|after pivot values ?在指定的值前或者后插入值 ---------------------------Set---------------------------------------- ? sadd key values ? ? ? ? ? ? 添加set集合成员 ? smembers key ? ? ? ? ? ? ? ?查看成员 ? sismember key values ? ? ? ?判断是否存在values ? scard key ? ? ? ? ? ? ? ? ? 统计个数 ? srem key values ? ? ? ? ? ? 删除成员 ? srandmember key n ? ? ? ? ? 随机显示n个成员 (n<0可能重复) ? spop key n ? ? ? ? ? ? ? ? ?随机删除n个成员 ? sinter key1 key2 ? ? ? ? ? ?取集合交集? -------------------------Zset(set排序了)------------------------------------------ ?zadd key n xxx n xxx n xxx ? ?添加集合 (n:数字 xxx:字符串)? ?zrange key strat n ?withscores ?显示区间类的成员和分数(min->max) ?zrevrange key start stop ? ? ? ?显示区间类的成员和分数(max->min) ?zrem key xxx xxx ? ? ? ? ? ? ? ?删除xxx xxx成员 ?zrangebyscore key n n++ ? ? ? ? 显示子在(N,N+)区间的值(-inf:最小值 ?zrangebyscore key n n++ limit n n++ ?取出对应值然然后分页 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +inf:最大值) ?zcount key min max ? ? ? ? ? ? ? 统计(min,max)的成员个数? ? ------------------------------------------------------------ ? ?zrevrangebyscore key +inf 2000 withscores limit 1 5? ? ? ?降序取出最大值到2000的成员中的5个 ? ? ?zrangebyscore key -inf ?5000 withscores limit 1 5? ? ? ?降序取出最小值到5000的成员中的5个 ? ? ? ---------------------事务---------------------------------------------- ? ? ? ? ?? ? ? multi 事务开始 ? ? (服务端开启一定的空间来存放命名) ? ? exec ?事务执行 ? ? (服务器开始按顺序执行) ? ? discard 事务放弃 ?? ? ? 注:如果开启事务的过程中出现语法错误事务自动放弃 ? ? ? ? 如果语法没错但是实际的操作不符合数据本身事务也会执行 ? ? ? ? 输入discard视为自动放弃,事务也不执行 ? ? ? ? watch机制:意思是当a事务对数据xx做修改时会监控xx的值是否在a执行之前 ? ? 有变化,如果没有a事务就会对xx进行操作如果有a主动放弃对xx的操作 ? ?(即:多个事务在同一时间对数据a进行修改他们就会竞争a的修改权谁拿到谁改) ? --------------------------持久化(保证数据一直存在)------------------------------ ? ? ? ? ? ? ?RDB机制:在指定的时间间隔内将数据集快照写入磁盘中,数据恢复时在读到内存 ? ? ? ?默认开启的时间:300秒内数据改变10次 ? ? ? ? ? ? 缺点:可能会是数据丢失(做缓存无影响) ? ? ? ?AOF机制:默认记录对数据的修改的操作,不记录读取 ? ? ? ? ? ? ? ?AOF的速度慢,占用内存多,安全性高 ? ? ? ? ? ? ? ?RDB:速度快占内存高但是安全性低一些 ? ? ? ?使用方式:做数据缓存 RDB ? ? ? ? ? ? ? ? ?做数据库 ? AOF? ? ? ? ?切换方式:修改redis.conf文件开启AOF即可 主从复制:多个redis服务器处理一种业务,主要的redis负责数据读取,其他的 ? ? ? ? ? 链接从redisf负责存入,同时主redis可以写入同时将数据与其他从 ? ? ? ? ? redis数据同步但是其他的从redis不能够写入数据 ? ? ? ?info replication ? ? 查看关系信息 ? ? ? ?slaveof ip port ? 设置从服务器 ? ? ? ?slaveof no one ? ?升级为主服务器 ? ? ? -------------------------------哨兵机制------------------------------------------------ ? ? ? ? redis-sentiner ?redis自带的监控程序的运行情况,可以监控redis的主从 ? ? ? ? redis服务器的运行情况,如果主服务器发生故障自动更改生成的从服务器的 ? ? ? ? 一台升级为主,剩下的从服务器链接到新的主服务器 ---------------------------------------------------------------------------------------

JAVA代码控制Redis:

<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version> </dependency> </dependencies>

代码:

package com.atchengdu.redis; import redis.clients.jedis.Jedis; import java.util.List; public class testspringredis { public static void main(String[] args) { //创建jedis对象 然后操作jrdis String host ="192.xxx.xxx.xxx";//redis的主机地址 int port =6379;//redis的端口号 Jedis jedis=new Jedis(host,port); //设置访问密码 jedis.auth("123456"); //操作数据 jedis.set("break","豆浆油条"); String aBreak = jedis.get("break"); System.out.println(aBreak); jedis.mset("lunch","红烧肉","dinner","小面"); List<String> mget = jedis.mget("lunch", "dinner", "break"); for(String s:mget){ System.out.println(s); } //查询id=1 student key == student:1 if(jedis.exists("student:1")){ String student =jedis.get("student:1"); }else { //访问数据库 String student=""; jedis.set("setduent",student); } } }

创建线程池的方式保证安全性:

package com.atchengdu.redisutils; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisGet { //jedispool对象 private static JedisPool pool; public static JedisPool open(String host,int port){ if(pool==null){ //设置jedispool线程池属性 JedisPoolConfig config =new JedisPoolConfig(); //设置最大的线程数量 config.setMaxTotal(100); //设置空闲数 config.setMaxIdle(2); //设置检查项,避免null的情况 config.setTestOnBorrow(true); //创建线程池 pool=new JedisPool(config,host,port,6000,"123456"); } return pool; } //关闭 public static void close(){ if (pool!=null){ pool.close(); } } } package com.atchengdu.redis; import com.atchengdu.redisutils.RedisGet; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import java.util.List; public class Testrdeis { public static void main(String[] args) { String host ="xx.xxx.xxx.xxx";//redis的主机地址 int port =6379;//redis的端口号 Jedis jedis=null; JedisPool pool=null; try { //获取线程池 pool= RedisGet.open(host,port); //获取jedis对象 jedis = pool.getResource(); List<String> mget = jedis.mget("lunch", "dinner", "break"); for(String s:mget){ System.out.println(s); } }catch (Exception e){ e.printStackTrace(); }finally { //使用结束之后把jedis对象放回去其他的地方可以接着使用 if(jedis!=null){ jedis.close(); } //关闭poll RedisGet.close(); } } }

??


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #JAVA #redis命令 #常用命令 #redisconf #ampamp客户端启动