前言
SQL数据库,指关系型数据库。有MySQL、SQL Server等
NoSQL(Not Only SQL)数据库,指非关系型数据库。有Redis、mongoDB、CouchDB、Cassandra、riak、membase等
NoSQL数据库相较与传统关系型数据库的优点(传统关系型数据库无法适用web2.0海量数据的操作维护):
redis默认端口为6379
redis服务器根据配置文件启动
//设置端口 Jedis jedis = new Jedis("主机名", 6379); jedis.auth("密码"); jedis.set("name","devon"); String name = jedis.get("name"); System.out.println(name); //4.释放资源 jedis.close();Jedis数据库连接测试
//获得连接池 JedisPoolConfig config = new JedisPoolConfig(); //设置最大连接池 config.setMaxTotal(30); //设置最大空闲连接数 config.setMaxIdle(10); //获得核心对象 JedisPool jedisPool = new JedisPool(config, "主机名", 6379); Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.auth("密码"); jedis.set("name","张三"); String value = jedis.get("name"); System.out.println(value); }catch (Exception e){ e.printStackTrace(); }finally { if (jedis!=null){ jedis.close(); } if (jedisPool != null){ jedisPool.close(); } }Jedis连接池数据库连接测试
keys * #查询所有key
keys str? #查询以字符串str开头的key
del key1 key2 key3 ... #删除多个key
exists key #判断key是否存在,存在返回1不存在返回0
rename key newkey #对key进行重命名
expire key times(秒) #设置过期的时间
ttl key #查看key所剩的时间,若没有设置,则返回-1
type key #获取指定key的类型
set key value # 赋值
get key # 获取值
get set company baidu ==> get company , set company baidu del key # 删除
incr num # num 的值+1 没有默认为0 加一就是1 如果num类型不能做加一运算 报错
decr num #减一 同理
incrby num 5 #num += 5
decrby num 5 #num -= 5;
append num 5 #num 后面追加字符串“5” 如果num不存在默认为空字符串
hset myhash username jack #设置一个键值对
hmset myhash username rose age 21 #设置多个键值对
hget myhash username #获取一个键的值
hmget myhash username age #获取多个hash键位的数据
hgetall myhash #获取某个hash的所有键值对
hdel myhash username age #删除特定的键值
hgetall myhash #获取myhash的所有键值对
del myhash #删除整个集合
hexists myhash username #判断某个键是否存在
1.两端添加:lpush、rpush
lpush list 1 2 3 #从左侧往list表中插入1 2 3
rpush list a b c #从右侧忘list表中插入a b c
2.查看列表:lrange
lrange list 0 -1 #从头到尾查看
lrange list 0 5 #从开始到第5个查看
3.两端弹出:lpop、rpop
lpop list #从左边弹出第一个数
rpop list #从尾部弹出第一个数
4.获取列表元素个数:llen
llen list #查看元素个数
5.扩展命令:lpushx、rpushx、lrem、lset、rpoplppush
lpushx list x #插入x到list表的开头,与lpush区别是,lpush插入的list为空的话则建一个list再插入,lpushx不会插入
rpushx list y #插入y到list表的尾部
lrem list 2 3 #从头到尾删除2个3
lrem list -2 1 #从尾到头删除2个1,负号代表从后往前
lrem list 0 2 #删除所有2
lset list 3 mmm #在list表第3个下标设置mmm
linset list before a yy #在list表中a之前插入yy
linset list after b xx #在list表中b之后插入xx
rpoplpush list1 list2 #将list1表的开头压入到list2表的结尾
sadd myset a b c #往myset中存入a,b,c
srem myset a # 删除a
smembers myset #查看set中的值
sismember myset a #查看a是否存在myset中
sdiff myset1 myset2 #差集运算,两个集合的顺序有关
sinter myset1 myset2 #交集运算
sunion myset1 myset2 #并集运算
scard myset #查询set中值的数量
srandmember myset #随机返回一个值
sdiffstore 新集合 集合1 集合2 #集合1,集合2的差值存到新集合中
sinterstore 新集合 集合1 集合2 #集合1,集合2的交集存到新集合中
sunionstore 新集合 集合1 集合2 #集合1,集合2的并集存到新集合中
sorted-set:每个成员都有一个分数与之关联,成员唯一,可以对应多个分数
zadd mysort 10 a 20 b 30 c #存入值a的分数是10、b的分数是20、c的分数是30
zscore mysort a #获得a的分数
zrem mysort a b #删除成员a、b
zremrangebyrank mysort 0 4 #删除排名0-4的成员
zremrangebyscore mysort 10 30 #删除分数10-30的成员
zrange mysort 0 -1 #查看所有成员
zrange mysort 0 -1 withscores #查询成员及分数,从小到大
zrevrange mysort 0 -1 withscores #查询成员及分数,从大到小
zrangebyscore mysort 0 100 withscores #显示0-100分数的成员
zrangebyscore mysort 0 100 withscores limit 0 2 #显示0-100分数的成员的前两名
zincrby mysort 10 c #给c加上10
zcount mysort 80 100 # 显示80-100分数的成员个数