Redis简述:
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.
安装:
在cmd里进入redis文件,输入redis-server.exe redis.windows.conf,查看redis是否安装成功!
redis-cli.exe(进入命令)
一、String类型:
reids的String类型不仅仅存储字符,还可以存储任何数据,比如图或序列化对象
常用命令:
1. mset - 一次设置多个key值(成功返回ok,失败返回0)
列:mset key1 hello key2 world
2.incr - 对key的值做++操作系统磁盘缓存
列:incr age
3.append - 给指定key的字符串追加value
列:append name san
二、List类型
redis的list类型是一种链表结构,主要功能是push(进栈),pop(出栈)
常用命令:
1.lpush - 在key对应list的头部添加字符串元素
列:lpush mylist "hello"
2.lrange - 显示key对应list的元素
列:lrange mylist 0-11 "hello"
3.lpop - 从key对应listde 的头部删除元素
列:lpop mylist "world"
三、set类型
redis的set类型是String类型的无序集合,底层通过hash表实现
常用命令:
1.sadd - 为指定key的set添加元素
列:sadd myset "hello"
2.smembers - 显示key对应set的元素
列:smembers myset "hello"
3.srem - 删除指定key的set中元素
列:srem myset "hello"
redis常用命令:
- keys * - 查询所有key
- type - 返回值的类型 列:type mylist
- exists - 验证数据(检查建key是否存在)
- select - 选择数据库(redis数据库编号0-15) 列:select 1,默认0
Redis高级特性
- 安全性 - 设置客户端连接后进行任何其他指定前需要使用的密码
- 主从复制 - 通过主从复制可以允许多个从slaveserver拥有和masterserver相同的数据库副本
- 事物控制 - 由于redis是单线程处理,只能保证一个clien发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令
- 持久化机制 - redis可以将内存中的数据同步到磁盘中来保证持久化。redis支持两种持久化方案,一种是(快照方式,也是默认方式),另一种是(AOF)的方式
public class TestRedis {
private Jedis jedis;
/**
* 连接redis数据库
*/
public void connectRdedis() {
//参数1、Redis数据库IP地址
//参数2、Redis数据库端口号
jedis = new Jedis("127.0.0.1",6379);
//权限认证
//jedis.auth("aaaa");
}
/**
* redis操作字符串类型
*/
public void testString() {
//添加数据
jedis.set("name", "zh");
System.out.println(jedis.get("name"));
//拼接字符串
jedis.append("name","你好");
System.out.println(jedis.get("name"));
//删除数据
jedis.del("name");
//设置多个数据
jedis.mset("name","zh","age","23","qq","1234578");
jedis.incr("age");
}
/**
* redis操作list类型
*/
public void testList() {
//添加数据
jedis.lpush("学习","oo");
jedis.lpush("学习","web");
jedis.lpush("学习", "ee");
System.out.println(jedis.lrange("学习", 0, -1));
}
/**
* redis操作set类型
*/
public void testSet() {
//添加数据
jedis.sadd("names","张三");
jedis.sadd("names","李四");
jedis.sadd("names","王五");
System.out.println(jedis.smembers("names"));
}
public static void main(String[] args) {
TestRedis redis = new TestRedis();
redis.connectRdedis();
redis.testString();
redis.testList();
redis.testSet();
}